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

thinkphp购物网站开发视频如何做国际网站首页

thinkphp购物网站开发视频,如何做国际网站首页,软文广告经典案例600,网页制作模板手稿文章目录 代理模式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.hkea.cn/news/14498822/

相关文章:

  • 南昌做网站比较好的公司有哪些只用ip做网站 不备案
  • 网站规划管理系统南京江北新区房价
  • 做平面还有什么素材网站国外做电商网站有哪些方面
  • 天津自贸区建设局网站如何建设一个视频网站
  • 贵州专业网站建设公司哪家好优化网站浏览量怎么看
  • 手机怎么自己做网站天津招聘网人才招聘官网
  • 配音阁在线制作网站网站班级文化建设
  • 建站如何注重内容建设营销公关名词解释
  • 嘉兴建设网站无锡公司建立网站
  • 网站建设一般需要什么软件哪些公司做网站改造
  • 直播网站开发要多久成都网站制作电话
  • 想攻击一个网站怎么做湖南常德地图
  • 怎么样增加网站权重网推地推
  • 阿里云里做网站能上百度首页么app开发哪家好公司
  • 专门做门的网站域名一个注册要多久
  • 建设网站要准备什么17模板网站
  • 做二维码报名网站建站如何挣钱
  • 沈阳seo网站关键词优化优化平台建设公司
  • 哪里有做网站系统的直通车推广怎么收费
  • 滕州网站建设招聘seo1视频发布会
  • 如何评价网站是否做的好处网页设计心得体会300字
  • WordPress国产企业主题m东莞网站优化专家
  • 站长工具端口检测seo搜索优化是什么呢
  • 杭州高端网站购买空间网站哪个好
  • 建设局网站新闻购物网站建设规划书
  • 做网站 域名 最快要多久软装设计图 效果图
  • 3合一网站怎么做wordpress 树形页面
  • 定制鞋子的app企业优化推广
  • 专业做网站团队网站提示危险网站
  • html怎么做网站首页网络定制营销