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

电商网站设计教程佛山网站定制

电商网站设计教程,佛山网站定制,有哪些网站建设工作室,大连无网站的企业有哪些笔记来源#xff1a;尚硅谷Java设计模式#xff08;图解框架源码剖析#xff09; 代理模式 1、代理模式的基本介绍 1#xff09;代理模式#xff1a;为一个对象提供一个替身#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象2#xff09;这样做的好处是… 笔记来源尚硅谷Java设计模式图解框架源码剖析 代理模式 1、代理模式的基本介绍 1代理模式为一个对象提供一个替身以控制对这个对象的访问。即通过代理对象访问目标对象2这样做的好处是可以在目标对象实现的基础上增强额外的功能操作即扩展目标对象的功能3被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象4代理模式有不同的形式主要有三种 静态代理动态代理JDK 代理、接口代理Cglib 代理可以在内存动态的创建对象而不需要实现接口它是属于动态代理的范畴 2、静态代理 2.1、基本介绍 静态代理在使里时需要定义接口或者父类被代理对象即目标对象与代理对象一起实现租同的接口或者是继承和同父类— 应用实例 2.2、应用实例 1定义一个接口ITeacherDao2目标对象TeacherDAO实现接口ITeacherDAO3使用静态代理方式就需要在代理对象TeacherDAOProxy中也实现ITeacherDAO4调用的时候通过调用代理对象的方法来调用目标对象5特别提醒代理对象与目标对象要实现相同的接口然后通过调用相同的方法来调用目标对象的方法 UML 类图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzKBb7vY-1693135171412)(https://s2.loli.net/2021/12/08/k4aXGKCedrq3sO6.png)] 核心代码 /*** 代理接口*/ public interface ITeacherDao {void teach(); } /*** 被代理对象*/ public class TeacherDao implements ITeacherDao {Overridepublic void teach() {System.out.println(老师授课中...);} } /*** 代理对象*/ public class TeacherDaoProxy implements ITeacherDao {private ITeacherDao iTeacherDao;public TeacherDaoProxy(ITeacherDao iTeacherDao) {this.iTeacherDao iTeacherDao;}Overridepublic void teach() {System.out.println(准备授课...);iTeacherDao.teach();System.out.println(结束授课...);} }调用代理 //创建被代理对象 TeacherDao teacherDao new TeacherDao(); //创建代理对象聚合被代理对象 TeacherDaoProxy teacherDaoProxy new TeacherDaoProxy(teacherDao); //通过代理对象调用被代理对象的方法 teacherDaoProxy.teach();2.3、静态代理优缺点 1优点在不修改目标对象的功能前提下能通过代理对象对目标功能扩展2缺点因为代理对象需要与目标对象实现一样的接口所以会有很多代理类3缺点一旦接口增加方法目标对象与代理对象都要维护 3、动态代理 3.1、基本介绍 1代理对象不需要实现接口但是目标对象要实现接口否则不能用动态代理2代理对象的生成是利用 JDK 的 APl动态的在内存中构建代理对象3动态代理也叫做JDK 代理、接口代理 3.2、JDK 中生成代理对象的 API 1代理类所在包java.lang.reflect.Proxy 2JDK 实现代理只需要使用newProxyInstance方法但是该方法需要接收三个参数完整的写法是 static Object newProxylnstance(ClassLoader loader, Class?[] interfaces, InvocationHandler h)UML 类图 核心代码 // ITeacherDao与TeacherDao同上 /*** 代理工厂*/ public class TeacherFactory {/*** 目标对象*/private Object target;public TeacherFactory(Object target) {this.target target;}public Object newProxyInstance() {return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(JDK代理授课开始...);Object returnVal method.invoke(target, args);System.out.println(JDK代理授课结束...);return returnVal;}});} }其中几个参数 1ClassLoader loader指定当前目标对象使用的类加载器获取加载器的方法固定2Class?[] interfaces目标对象实现的接口类型使用泛型方法确认类型3InvocationHandler h事情处理执行目标对象的方法时触发事情处理器方法把当前执行的目标对象方法作为参数传入 4、Cglib 代理 4.1、基本介绍 1静态代理和 JDK 代理模式都要求目标对象是实现一个接口但是有时候目标对象只是一个单独的对象并没有实现任何的接口这个时候可使用目标对象子类来实现代理——这就是 Cglib 代理2Cglib 代理也叫作子类代理它是在内存中构建一个子类对象从而实现对目标对象功能扩展有些书也将 Cglib 代理归属到动态代理。3Cglib 是一个强大的高性能的代码生成包它可以在运行期扩展 java 类与实现 java 接口。它广泛的被许多 AOP 的框架使用例如 Spring AOP实现方法拦截4在 AOP 编程中如何选择代理模式 目标对象需要实现接口用 JDK 代理目标对象不需要实现接口用 Cglib 代理 5Cglib 包的底层是通过使用字节码处理框架 ASM 来转换字节码并生成新的类 4.2、实现步骤 1需要引入cglib的 jar 文件 2在内存中动态构建子类注意代理的类不能为final否则报错java.lang.IllegalArgumentException 3目标对象的方法如果为final/static那么就不会被拦截即不会执行目标对象额外的业务方法 4.3、应用实例 UML 类图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Z7FIdMT-1693135171413)(https://s2.loli.net/2021/12/10/jMtwO2nBWPRurlh.png)] 核心代码 /*** 被代理对象*/ public class TeacherDao {public String teach() {System.out.println(老师授课中...);return Good;} }/*** 代理工厂类*/ public class ProxyFactory implements MethodInterceptor {/*** 目标对象*/private Object target;/*** 构造函数** param target*/public ProxyFactory(Object target) {this.target target;}/*** 返回代理对象** return*/public Object getProxyInstance() {// 1、创建工具类Enhancer enhancer new Enhancer();// 2、设置父类enhancer.setSuperclass(target.getClass());// 3、设置回调函数enhancer.setCallback(this);// 4、创建子类对象即代理对象return enhancer.create();}Overridepublic Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {System.out.println(cglib代理开始...);Object retVal method.invoke(target, args);System.out.println(cglib代理结束...);return retVal;} }调用代理 //创建目标对象 TeacherDao teacherDao new TeacherDao(); //通过代理工厂创建代理对象 TeacherDao proxyInstance (TeacherDao) new ProxyFactory(teacherDao).getProxyInstance(); //通过代理对象调用目标对象方法 String retVal proxyInstance.teach(); System.out.println(retVal retVal);5、代理模式的变体 几种常见的代理模式介绍一几种变体 1防火墙代理内网通过代理穿透防火墙实现对公网的访问 2缓存代理比如当请求图片文件等资源时先到缓存代理取如果取到资源则 ok如果取不到资源再到公网或者数据库取然后缓存 3远程代理远程对象的本地代表通过它可以把远程对象当本地对象来调用。远程代理通过网络和真正的远程对象沟通信息 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wq6cQidA-1693135171413)(https://s2.loli.net/2021/12/11/TEyYHr7ZoB3KcjS.png)] 4同步代理主要使用在多线程编程中完成多线程间同步工作
http://www.w-s-a.com/news/353037/

相关文章:

  • 开封网站建设培训郑州高端网站建设哪家好
  • 东莞哪家做网站很有名的公司即墨专业医院网站制作公司
  • 做面食网站china cd wordpress
  • 门户网站 营销优秀建筑模型案例作品
  • 训做网站的心得体会范文中山市 有限公司网站建设
  • 服装电子商务网站建设过程与实现两学一做学习教育网站
  • 住房和城建设网站怎么用源码建站
  • 监理工程师证查询网站百度关键词优化软件网站
  • 关于建筑建设的网站asp网站建设报告书
  • 服务二级公司网站建设平台销售模式有哪些
  • 南昌县建设局网站微信分销小程序开发
  • 网站设计师需要什么知识与技能wordpress个性
  • 做茶叶网站的目的和规划有什么做照片书的网站
  • 开福区城乡建设局门户网站关键词挖掘查询工具爱站网
  • 网站建设全国排名沈阳seo按天计费
  • 成都公司网站设计无锡seo网站推广费用
  • 建网站平台要多少钱购物网站界面设计策划
  • 学完js了可以做哪些网站长沙建站官网
  • 怎么样做问卷网站多少钱英语
  • 房产网站建设方案建筑公司是干什么的
  • wordpress建的大型网站柳州市网站建设
  • 石家庄做网站的公司有哪些微信自媒体网站建设
  • 池州哪里有做网站注册公司有哪些风险
  • 做古代风格头像的网站对网站政务建设的建议
  • 网站搜索栏怎么做设计个网站要多少钱
  • 阿里巴巴网站建设目标wamp wordpress
  • 自己做的网站怎么挂网上金蝶erp
  • 网站的页面由什么组成淘宝网网站建设的需求分析
  • 软文网站推广法dede5.7内核qq个性门户网站源码
  • 个人备案网站名称校园网站建设特色