当前位置: 首页 > news >正文

做一个宣传网站要多少钱游戏推广代理平台

做一个宣传网站要多少钱,游戏推广代理平台,什么公司做的网站好,乳山房产网结构型模式 - 代理模式 (Proxy Pattern) 代理模式是一种结构型设计模式,它允许通过代理对象来控制对另一个对象(目标对象)的访问。代理对象充当目标对象的接口,客户端通过代理对象间接访问目标对象。 分为两大类 静态代理&#…

结构型模式 - 代理模式 (Proxy Pattern)

代理模式是一种结构型设计模式,它允许通过代理对象来控制对另一个对象(目标对象)的访问。代理对象充当目标对象的接口,客户端通过代理对象间接访问目标对象。


分为两大类

  • 静态代理(编译时就知道
  • 动态代理(Java程序运行时才知道

Java 静态代理

// 定义用户服务接口
public interface UserService {// 添加用户方法void addUser(String username);
}// 实现用户服务接口的具体类
public class UserServiceImpl implements UserService {@Overridepublic void addUser(String username) {System.out.println("添加用户: " + username);}
}// 用户服务的代理类
public class UserServiceProxy implements UserService {// 持有目标对象private UserService target;public UserServiceProxy(UserService target) {this.target = target;}@Overridepublic void addUser(String username) {// 在调用目标方法之前添加额外逻辑,这里是打印日志System.out.println("开始添加用户操作,记录日志...");// 调用目标对象的方法target.addUser(username);// 在调用目标方法之后添加额外逻辑,这里是打印日志System.out.println("添加用户操作完成,记录日志...");}
}// 测试静态代理的类
public class StaticProxyTest {public static void main(String[] args) {// 创建目标对象UserService target = new UserServiceImpl();// 创建代理对象,并将目标对象传入UserService proxy = new UserServiceProxy(target);// 通过代理对象调用添加用户方法proxy.addUser("张三");System.out.println();}
}

Java 动态代理又细分为两类

  • jdk 代理
  • cglib 代理
// jdk 方式import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;// 业务接口
public interface UserService {void addUser(String username);
}// 业务接口实现类
public class UserServiceImpl implements UserService {@Overridepublic void addUser(String username) {System.out.println("添加用户: " + username);}
}// 代理处理器
class UserServiceProxyHandler implements InvocationHandler {private final Object target;public UserServiceProxyHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 在调用目标方法之前添加额外逻辑System.out.println("开始执行添加用户操作...");// 调用目标方法Object result = method.invoke(target, args);// 在调用目标方法之后添加额外逻辑System.out.println("添加用户操作执行完毕。");return result;}
}// 测试类
public class JdkProxyExample {public static void main(String[] args) {// 创建目标对象UserService target = new UserServiceImpl();// 创建代理处理器UserServiceProxyHandler handler = new UserServiceProxyHandler(target);// 生成代理对象UserService proxy = (UserService) Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),handler);// 调用代理对象的方法proxy.addUser("张三");}
}
// cglib 代理import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;// 业务类
public class UserManager {public void addUser(String username) {System.out.println("添加用户: " + username);}
}// 代理拦截器
public class UserManagerInterceptor implements MethodInterceptor {@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {// 在调用目标方法之前添加额外逻辑System.out.println("开始执行添加用户操作...");// 调用目标方法Object result = proxy.invokeSuper(obj, args);// 在调用目标方法之后添加额外逻辑System.out.println("添加用户操作执行完毕。");return result;}
}// 测试类
public class CglibProxyExample {public static void main(String[] args) {// 创建 Enhancer 对象Enhancer enhancer = new Enhancer();// 设置父类enhancer.setSuperclass(UserManager.class);// 设置回调函数enhancer.setCallback(new UserManagerInterceptor());// 生成代理对象UserManager proxy = (UserManager) enhancer.create();// 调用代理对象的方法proxy.addUser("李四");}
}

对比分析

根本差异体现

代理机制

  • JDK 代理:依赖接口。在 JDK 代理示例中,UserService 是一个接口,UserServiceImpl 实现了该接口,代理对象是基于接口生成的。
  • CGLIB 代理:基于继承。在 CGLIB 代理示例中,UserManage 是一个普通类,代理对象是 UserManage 的子类。

方法调用

  • JDK 代理:在 InvocationHandler 的 invoke 方法中,使用 method.invoke(target, args) 调用目标对象的方法,这里的 target 是实际的目标对象。
  • CGLIB 代理:在 MethodInterceptor 的 intercept 方法中,使用 proxy.invokeSuper(obj, args) 调用目标类的方法,obj 是代理对象本身。
http://www.15wanjia.com/news/39461.html

相关文章:

  • 潍坊疫情最新消息实时重庆seo论坛
  • wordpress+手工网站教育机构加盟
  • 博客做单页网站如何规划企业网络推广方案
  • 长沙品牌网站建设互联网的推广
  • 免费搭建手机网站源码广州网站设计专注乐云seo
  • 企业网站的类型平台怎么推广
  • 没有网站可以做的广告联盟互联网项目推广平台有哪些
  • 简述网站建设的一般流程网站服务器一年的费用
  • wordpress hacker主题搜索引擎优化公司排行
  • 洛阳数码大厦做网站的在几楼现在比较好的营销平台
  • 西安市城乡建设管理局网站6徐州关键词优化排名
  • wordpress主题tob网络快速排名优化方法
  • 网站可以做怀孕单吗海口seo网络公司
  • 福建省建设执业注册中心网站企业网站推广方法实验报告
  • 网站开发策划案自助建站工具
  • 数字创意设计包括哪些工具重庆二级站seo整站优化排名
  • 阿里云主机可以放几个网站行业网站网址
  • ie10网站后台无法编辑网络科技公司网站建设
  • wordpress 主题 mnews武汉seo论坛
  • 哪些网站做的好处和坏处长沙seo优化排名
  • 上海公安门户网站交换友情链接的平台有哪些
  • 网站首屏做多大推广普通话内容50字
  • 石家庄工程信息网百度优化排名
  • 目录搜索引擎网站网站排名靠前
  • wordpress 轻博客主题郑州粒米seo外包
  • 怎么做签到网站公司网络组建方案
  • 陈巴尔虎旗网站建设太原seo网站管理
  • 磐安建设局网站北京疫情最新情况
  • 推广团队在哪里找沈阳关键词优化报价
  • 图片网站cms网络营销的种类有哪些