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

网站架构设计师面试技巧wordpress配置文件修改

网站架构设计师面试技巧,wordpress配置文件修改,旅游网站系统wordpress,wordpress 微信分享插件下载文章目录 代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cglib代理 来和大家聊聊代理模式 代理模式 代理模式#xff1a;即通过代理对象访问目标对象#xff0c;实现目标对象的方法。这样做的好处是#xff1a;可以在目标对象实现的基础上#xff0c;增强额外的功能操… 文章目录 代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cglib代理 来和大家聊聊代理模式 代理模式 代理模式即通过代理对象访问目标对象实现目标对象的方法。这样做的好处是可以在目标对象实现的基础上增强额外的功能操作实现对目标功能的扩展。 这涉及到一个编程思想不要随意去修改别人已经写好的代码或者方法有坑。如果需要修改可以通过代理模式实现。 代理模式通常有三种实现写法静态代理、动态代理、Cglib代理 代理模式的UML图 从UML图中可以看出代理类与真正实现的类都是继承了抽象的主题类这样的好处在于代理类可以与实际的类有相同的方法可以保证客户端使用的透明性。 1、静态代理 我们先看针对上面UML实现的例子再看静态代理的特点。 Subject接口的实现 public interface Subject {void visit(); }实现了Subject接口的两个类 public class RealSubject implements Subject {private String name byhieg;Overridepublic void visit() {System.out.println(name);} } public class ProxySubject implements Subject{private Subject subject;public ProxySubject(Subject subject) {this.subject subject;}Overridepublic void visit() {subject.visit();} }具体调用如下 public class Client {public static void main(String[] args) {ProxySubject subject new ProxySubject(new RealSubject());subject.visit();} }通过上面的代理代码我们可以看出代理模式的特点代理类接受一个Subject接口的对象任何实现该接口的对象都可以通过代理类进行代理增加了通用性。但是也有缺点每一个代理类都必须实现一遍委托类也就是realsubject的接口如果接口增加方法则代理类也必须跟着修改。其次代理类每一个接口对象对应一个委托对象如果委托对象非常多则静态代理类就非常臃肿难以胜任。 2、动态代理 动态代理有别于静态代理是根据代理的对象动态创建代理类。这样就可以避免静态代理中代理类接口过多的问题。动态代理是实现方式是通过反射来实现的借助Java自带的java.lang.reflect.Proxy,通过固定的规则生成。 其步骤如下 编写一个委托类的接口即静态代理的Subject接口 实现一个真正的委托类即静态代理的RealSubject类 创建一个动态代理类实现InvocationHandler接口并重写该invoke方法 在测试类中生成动态代理的对象。 第一二步骤和静态代理一样不过说了。第三步代码如下 public class DynamicProxy implements InvocationHandler {private Object object;public DynamicProxy(Object object) {this.object object;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object result method.invoke(object, args);return result;} }第四步创建动态代理的对象 Subject realSubject new RealSubject(); DynamicProxy proxy new DynamicProxy(realSubject); ClassLoader classLoader realSubject.getClass().getClassLoader(); Subject subject (Subject) Proxy.newProxyInstance(classLoader, new Class[]{Subject.class}, proxy); subject.visit();创建动态代理的对象需要借助Proxy.newProxyInstance。该方法的三个参数分别是 ClassLoader loader表示当前使用到的appClassloader。 Class?[] interfaces表示目标对象实现的一组接口。 InvocationHandler h表示当前的InvocationHandler实现实例对象。jdk自带动态代理 java.lang.reflect.Proxy 作用动态生成代理类和对象 java.lang.reflect.InvocationHandler(处理器接口) 可以通过invoke方法实现对真实角色的代理访问每次通过Proxy生成代理类对象时都指定对对应的处理器对象 3、Cglib代理 要实现Cglib代理必须引入cglib.jar 包由于Spring-core包中已经包含了cglib功能且大部分Java项目均引入了spring 相关jar包这边使用spring的cglib来讲解。他俩实现方式都是一样的 public class CglibProxy implements MethodInterceptor {//目标对象private Object obj;public CglibProxy(Object obj){this.objobj;}//给目标对象创建一个代理对象public Object getProxyInstance(){//1.工具类Enhancer en new Enhancer();//2.设置父类en.setSuperclass(obj.getClass());//3.设置回调函数en.setCallback(this);//4.创建子类(代理对象)return en.create();}Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println(CglibProxy---------);return method.invoke(obj,objects);} }说明可以看出Cglib代理模式实现不需要目标对象一定实现接口故目标对象如果没有实现接口可以使用cglib代理模式。其实Spring的代理模式也是这么实现的。
http://www.w-s-a.com/news/321318/

相关文章:

  • 物流网站的建设wordpress电视直播插件下载
  • 简述网站开发流程青岛做网站建设价格低
  • 网站开发的业务需求分析杭州推广公司
  • 网站建设技术实现难点app开发需要哪些软件
  • 响水建设局网站做网站需要会哪些知识
  • 企业制作企业网站个人网站可以做百度竞价
  • 做网站找投资人wordpress 5 主题教程
  • 做国外网站汇款用途是什么wordpress图片主题晨曦
  • 网站设计跟网站开发区别为什么网站需要维护
  • m 的手机网站怎么做网络推广方式和方法
  • wordpress图片自动轮播插件seo门户网站建设
  • 制作商业网站传奇网页游戏排名
  • 网站免费推广方案长沙房地产网站设计
  • 济南网站建设cnwenhui中交路桥建设网站
  • 韶关网站开发网站建设任务分解
  • 网站建设核心点阿根廷网站后缀
  • 哪些网站可以做招商广告语学校官网页面设计
  • 十堰城市建设网站网站开发流程宜春
  • 内江网站建设郑州网站优化外包
  • 土地流转网站建设项目云南抖音推广
  • 建设银行网站无法打开2021年有没有人给个网站
  • 高端手机网站建设网站建设岗位绩效
  • 泰安网络推广 网站建设 网站优化免费素材网站psd
  • 做企业网站联系网站开发具体的工作内容
  • 联合易网北京网站建设公司怎么样网站页面开发流程
  • 2015做那些网站能致富网站建设审批表
  • 深圳 网站设计个人名片模板
  • 网站建设费用选网络专业网站在线推广
  • 天津建设网站c2成绩查询用记事本制作html网页代码
  • 织梦二次开发手机网站如何成为一名设计师