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

网站做外链什么意思论坛类型的网站怎么做

网站做外链什么意思,论坛类型的网站怎么做,企业网站建设意义,个人主页网站设计代码代理模式#xff08;代理设计模式#xff09; 在有些情况下#xff0c;一个客户不能或者不想直接访问另一个对象#xff0c;这时需要找一个中介帮忙完成某项任务#xff0c;这个中介就是代理对象。例如#xff0c;购买火车票不一定要去火车站买#xff0c;可以通过 123…代理模式代理设计模式 在有些情况下一个客户不能或者不想直接访问另一个对象这时需要找一个中介帮忙完成某项任务这个中介就是代理对象。例如购买火车票不一定要去火车站买可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。 在软件设计中使用代理模式的例子也很多例如要访问的远程对象比较大如视频或大图像等其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象如某单位的内部数据库等。 代理模式的定义与特点 代理模式的定义由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时访问对象不适合或者不能直接引用目标对象代理对象作为访问对象和目标对象之间的中介。 代理模式的优点是 可以控制对象的访问和权限。可以为对象提供额外的功能例如缓存和延迟加载。可以降低系统的耦合度使得修改和扩展更加容易。 代理模式的缺点有 代理模式会造成系统设计中类的数量增加在客户端和目标对象之间增加一个代理对象会造成请求处理速度变慢增加了系统的复杂度 因为存在这些缺点所以动态代理模式就产生了用来更好的实现代理模式 代理模式的结构与实现 代理模式的结构比较简单主要是通过定义一个继承抽象主题的代理来包含真实主题从而实现对真实主题的访问下面是其基本结构和实现方法。 代理模式的主要角色如下 图1 代理模式的结构图 代理模式的分类 在代码中一般代理会被理解为代码增强实际上就是在原代码逻辑前后增加一些代码逻辑而使调用者无感知。 静态由程序员创建代理类或特定工具自动生成源代码再对其编译在程序运行前代理类的 .class 文件就已经存在了。动态在程序运行时运用反射机制动态创建而成是根据代理的对象动态创建代理类和代理对象。 静态代理模式 静态代理是最基本的代理模式它需要手动编写代理类。在 Java 中可以通过实现或继承相同的接口或父类使得代理对象拥有与实际对象相同的方法和属性。代理对象在调用实际对象的方法时可以在方法前或方法后添加一些额外的操作以实现特定的功能。 用一个简单的实例代码更好理解 //创建一个用户接口并且定义一个方法用来保存用户 public interface User {void saveUser(); }//创建真正实现操作的实现类用来实现save方法。 public class UserBoss implements User{Overridepublic void saveUser() {System.out.println( ---- 保存用户 ---- );} } //创建代理用户类内部存在真正用户对象来实现代理的方法-》saveUser public class UserProxy {private User user;public UserProxy(User user){this.user user;}public void saveUser() {System.out.println( ---- 代理保存开始 ---- );user.saveUser();System.out.println( ---- 代理保存结束 ----);} } //测试一下 public class SaveUser {public static void main(String[] args) {User user new UserBoss();UserProxy userProxy new UserProxy(user);userProxy.saveUser();} }静态代理如果还不理解这个案例可以看下必定懂 网址https://zhuanlan.zhihu.com/p/93908252 动态代理模式 最常见的动态代理 JDK动态代理基于接口的动态代理技术CGLIB动态代理基于父类的动态代理技术 JDK动态代理 JDK动态代理主要是基于反射使用反射解析目标对象的属性、方法等,根据解析的内容生成proxy.class简单就是在运行时生成一个代理对象并将所有方法调用转发给我们指定的处理器。 注意: JDK动态代理的调用处理程序必须事先继承 InvocationHandler 接口使用 Proxy 类中的 newProxyInstance 方法动态的创建代理类。 针对上面的例子修改一下代码 //创建一个用户接口并且定义一个方法用来保存用户 public interface User {void saveUser(); }//创建真正实现操作的实现类用来实现save方法。 public class UserBoss implements User{Overridepublic void saveUser() {System.out.println( ---- 保存用户 ---- );} }public class UserHandler implements InvocationHandler {private User user;public UserHandler(User user){this.user user;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(前置增强代码...);Object invoke method.invoke(user, args);System.out.println(后置增强代码...);return invoke;} } //test public static void jdkProxy(){User user new UserBoss();InvocationHandler handler new UserHandler(user);User proxy (User)Proxy.newProxyInstance(user.getClass().getClassLoader(), user.getClass().getInterfaces(),handler);proxy.saveUser(); }CGLIB 动态代理 基于目标对象创建子类的方式实现的它可以在运行时动态修改目标对象的字节码从而达到代理的目的可以代理没有任何接口的类 JDK动态代理必须要接口。 相比于静态代理和 JDK 动态代理CGLIB的性能更优秀因为其直接操作字节码避免了反射机制的调用使得代理方法的调用速度更快。但是CGLIB也有缺点就是在创建代理类时需要消耗更多的时间和内存。 使用CGLIB动态代理首先需要导入相关的Jar包.创建一个没有实现任何接口的类 public class UserService {public void saveUser(){System.out.println(---- 保存用户 ----);} }使用 CGLIB 动态代理来生成代理对象 //增强类 public class UserServiceInterceptor implements MethodInterceptor { //intercept的参数第一个是代理对象第二个是目标方法第三个是目标方法参数第四个是代理对象生成的代理方法。Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println(执行方法前);//result-CGLIB动态代理类实例//proxy-生成的代理类对方法的引用Object result proxy.invokeSuper(obj, args);System.out.println(执行方法后);return result;} }测试一下下 public class Main {public static void main(String[] args) {Enhancer enhancer new Enhancer();//创建增强器enhancer.setSuperclass(UserService.class);//设置代理类的父类enhancer.setCallback(new UserServiceInterceptor());//设置回调将增强类引入到生成的代理类中UserService userService (UserService)enhancer.create();//创建代理对象// 通过代理对象调用目标方法userService.saveUser();} }比较常用的就是这两种动态模式根据代码或许能够能更好的理解
http://www.hkea.cn/news/14476603/

相关文章:

  • wordpress是建站工具 还是语言学院门户网站建设自评
  • php网站接入支付宝淄博网站制作托管优化
  • 制作微信公众的网站开发来宾 网站建设
  • 网站管理是什么石家庄市建设厅网站
  • 资讯门户类网站有哪些从0搭建一个网站
  • 国内html5网站建设新闻类网站怎么做百度推广
  • 网站开发工程师 面试英语网站icp备案查询
  • 河北省和城乡建设厅网站wordpress地址应该填什么
  • 西安网站制作西安搜推宝网络安徽省建筑工程信息查询
  • 苏州晶体公司网站木卢seo教程
  • 科技公司建设网站公司网站怎么弄
  • 网站恶意镜像 301给个手机网站就这么难吗
  • 响应式企业网站开发所用的平台站长之家seo查询官方网站
  • 河南公司网站制作咨询免费网站排名优化软件
  • 网站建设中下载项目管理流程软件
  • 洛阳网站建设公司公司在网站做广告怎么做分录
  • 网站后台主流网站开发语言做网站微信朋友圈应该怎么发
  • 网站关键词在哪里设置3322怎么做网站
  • 重庆黄埔seo整站优化如何快速推广网站
  • 网站建设pwordpress 登录404
  • 建站是什么意思沈阳酒店企业网站制作公司
  • 常用的网站制作软件女人做春梦视频网站
  • 郑州 手机网站建筑设计专业推荐网站
  • 手机网页游戏排行榜前十张家港网站seo
  • 美图秀秀可以做网站吗vi设计公司网
  • 做网站分什么怎么做网站流量竞品分析
  • 做浏览单的网站有哪些o2o手机网站源码
  • 网站后台多个管理员做房地产网站
  • 首钢建设一公司网站表情包制作在线
  • 怎么用服务器lp做网站第一个做装修的网站