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

学做网站怎么样网站建设任务执行书

学做网站怎么样,网站建设任务执行书,电商网站建设技术交流问题,济南网站建设模板在软件开发中#xff0c;经常遇到需要对某个对象进行控制或者监控的场景。而直接修改对象的代码可能使代码变得复杂且难以维护。这时#xff0c;使用代理模式#xff08;Proxy Pattern#xff09;可以很好地解决这个问题。 代理模式是一种结构型设计模式#xff0c;通过引… 在软件开发中经常遇到需要对某个对象进行控制或者监控的场景。而直接修改对象的代码可能使代码变得复杂且难以维护。这时使用代理模式Proxy Pattern可以很好地解决这个问题。 代理模式是一种结构型设计模式通过引入一个代理对象来替代原始对象实现对原有对象的控制或扩展。Java中的代理模式常用于实现日志记录、权限控制、事务控制等功能。 原理及实现思路 代理模式的核心思想是通过引入代理对象作为中间层将客户端的请求转发给真正的对象从而实现对真实对象的控制。 代理模式包含三个主要角色 抽象主题Subject定义了代理对象和真实对象的共同接口。 真实主题RealSubject实现了抽象主题接口是真正的业务逻辑处理对象。 代理主题ProxySubject实现了抽象主题接口内部持有一个真实主题对象的引用通过代理对象间接调用真实对象。 实现代理模式的步骤如下 创建抽象主题接口定义需要代理的方法。 创建真实主题类实现抽象主题接口完成真正的业务逻辑。 创建代理主题类实现抽象主题接口持有一个真实主题对象的引用在代理方法中调用真实主题的方法。 静态代理 静态代理是最简单的一种代理技术由程序员手动编写代理类来代替真实对象。静态代理在编译期生成代理类在运行时代理类不会发生变化。 静态代理的优点是简单易懂、易于实现但缺点也显而易见每个代理类只能代理一个具体类当代理类的数量较多时会导致代码冗余并且每个代理类只能代理一个固定的类。 示例代码如下 // 抽象主题接口 interface Subject {void doSomething(); }// 真实主题类 class RealSubject implements Subject {Overridepublic void doSomething() {System.out.println(RealSubject do something.);} }// 代理主题类 class ProxySubject implements Subject {private Subject realSubject;public ProxySubject(Subject realSubject) {this.realSubject realSubject;}Overridepublic void doSomething() {// 对真实主题方法的增强System.out.println(Before do something.);realSubject.doSomething();System.out.println(After do something.);} }// 客户端代码 public class Client {public static void main(String[] args) {RealSubject realSubject new RealSubject();ProxySubject proxySubject new ProxySubject(realSubject);proxySubject.doSomething();} } 动态代理 动态代理是在运行时动态地生成代理对象相比于静态代理动态代理更加灵活。Java中提供了两种动态代理的实现方式基于接口的动态代理和基于类的动态代理。 基于接口的动态代理使用java.lang.reflect.Proxy类以及java.lang.reflect.InvocationHandler接口来实现。 这种方式要求被代理类实现一个接口并通过代理类来间接调用真实对象的方法。 示例代码如下 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;// 抽象主题接口 interface Subject {void doSomething(); }// 真实主题类 class RealSubject implements Subject {Overridepublic void doSomething() {System.out.println(RealSubject do something.);} }// InvocationHandler实现类 class MyInvocationHandler implements InvocationHandler {private Object realSubject;public MyInvocationHandler(Object realSubject) {this.realSubject realSubject;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 对真实主题方法的增强System.out.println(Before do something.);Object result method.invoke(realSubject, args);System.out.println(After do something.);return result;} }// 客户端代码 public class Client {public static void main(String[] args) {RealSubject realSubject new RealSubject();InvocationHandler handler new MyInvocationHandler(realSubject);Subject proxySubject (Subject) Proxy.newProxyInstance(Client.class.getClassLoader(),new Class[]{Subject.class},handler);proxySubject.doSomething();} } 基于类的动态代理使用cglib库不要求被代理类实现接口通过生成子类来实现代理。 示例代码如下 import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy;// 真实主题类 class RealSubject {public void doSomething() {System.out.println(RealSubject do something.);} }// MethodInterceptor实现类 class MyMethodInterceptor implements MethodInterceptor {Overridepublic Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {// 对真实主题方法的增强System.out.println(Before do something.);Object result methodProxy.invokeSuper(object, args);System.out.println(After do something.);return result;} }// 客户端代码 public class Client {public static void main(String[] args) {Enhancer enhancer new Enhancer();enhancer.setSuperclass(RealSubject.class);enhancer.setCallback(new MyMethodInterceptor());RealSubject proxySubject (RealSubject) enhancer.create();proxySubject.doSomething();} } 不同代理模式的优缺点及适用场景 优缺点 静态代理的优点在于简单易懂、易于实现。缺点是每个代理类只能代理一个具体类导致代码冗余不够灵活。 基于接口的动态代理的优点是可以代理实现了指定接口的任意对象不需要修改原有代码。缺点是只能代理接口中定义的方法。 基于类的动态代理的优点是可以代理任意类的对象不需要修改原有代码。缺点是不能代理final修饰的类和方法。 适用场景 静态代理适用于只需要代理少数几个类并且不需要频繁地修改代理类的情况。 基于接口的动态代理适用于需要对接口中的方法进行控制和扩展的情况。 基于类的动态代理适用于不需要修改原有代码、对类的任意方法进行控制和扩展的情况。
http://www.yutouwan.com/news/340342/

相关文章:

  • 哪个网站做调查赚钱多电商seo是什么意思
  • 唐山网站开发寻找移动网站建设
  • .net网站空间山西网站建设哪家好
  • 四川省住建厅官网湘潭优化公司
  • vs做网站怎样添加图片北京市推广公司
  • 长沙建网站的公司一对一定制方案制作微信公众的网站开发
  • 优化门户网站建设网站建设平台硬件要求
  • 广州海珠区最新通告柳市网站优化
  • 成都大型网站建设公司购物网站建设模板
  • 云网站后台招聘网站页面设计图片
  • 在建立网站站点的过程中wordpress安装插件失败
  • 宁波制作网站哪个好光泽网站建设
  • 网站建设600元全包佛山市企业网站建设报价
  • 网站项目意义网站开发 业务流程图
  • 怎么给网站做支付接口昆明网站设计公司哪家好
  • 手机站电影如何制作一个自己的网站?
  • 网页主要由三部分组成宁波关键词优化企业网站建设
  • 企业微信平台株洲关键词seo优化服务商
  • 地产网站建设方案网页制作接单
  • 广州网站开发系统丽水开发区建设局网站廉租房
  • 外贸网站高端定做怎么制作软件程序
  • 成都建设网站公司简介教人做衣服得网站有哪些
  • 百度网站官网app定制排名
  • 域名打不开原来的网站wordpress两个站点
  • 网站开发技术汇总建宣传网站
  • 不要验证码的广告网站怎么创建网站充值和提现账号
  • 建设银行手机短信网站怎么开通百度网络营销中心
  • vs 2015可以做网站吗wordpress外链批量保存本地
  • 阜阳微商城网站建设电子商务网站建设的开发背景
  • 通过ip直连打开网站要怎么做网站建设设计文档模板