摘要:代理模式的介绍代理模式是中常见,也是重要的一种模式,比如中的就是代理模式的一种应用。相对于简单粗暴地直接访问对象调用对象的方法,使用代理模式可以在对象的使用时,进行预处理和事后处理等。
1.代理模式的介绍
代理模式是java中常见,也是重要的一种模式,比如spring中的aop就是代理模式的一种应用。
那么代理模式究竟有什么作用?代理模式就是“控制和管理对象的访问”。相对于简单粗暴地直接访问对象、调用对象的方法,使用代理模式可以在对象的使用时,进行预处理和事后处理等。比如权限控制、日志记录。当然你可以直接在对象里,做这些操作,但是这样耦合性太高,不利于代码的维护。
2.如何使用代理模式
一个实现代理模式的demo,主要需要3个类
1)委托类接口
//委托类接口 public interface TestService { void business(); }
2)委托类的实现
//委托类的实现类 public class TestImplement implements TestService{ @Override public void business() { System.out.println("do the busniess"); } }
3)代理类
//委托类的代理类,注意需要implements 委托类 public class StaticProxy implements TestService{ private TestService testService; public StaticProxy(TestService testService) { this.testService = testService; } @Override public void business() { //可以做一些预处理,比如数据处理、权限控制等 System.out.println("before invoke,I can do something."); testService.business(); //可以做一些事后处理,比如执行结果的记录,事务提交等 System.out.println("before invoke,I can do something."); } }
测试方法:
TestService service = new TestImplement(); StaticProxy proxy = new StaticProxy(service); proxy.business();
测试输出结果:
before invoke,I can do something.
do the busniess
before invoke,I can do something.
以上就是代理的简单的一种实现,我们也叫静态代理。因为这样的实现方式,需要为每个委托类都写代理类,会产生大量的代理类,也不利于代码的复用和项目的解耦,所以我们会使用动态代理去解决这些问题。关于动态代理的详细介绍会在下篇中继续大话。
这是本人对于代理模式的一些理解,十分欢迎大家的指教和讨论。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70251.html
摘要:抽象工厂模式是为了处理对象具有等级结构以及对象族的问题。单例设计模式单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类。 导语:设计模式是无数码农前人在实际的生产项目中经过不断的踩坑、爬坑、修坑的经历总结出来的经验教训,经过抽象之后表达成的概念。能够帮助后来的设计者避免重复同样的错误或者弯路。我也抽空整理了一下设计模式,用自己的话总结了一下,自认...
摘要:从使用到原理学习线程池关于线程池的使用,及原理分析分析角度新颖面向切面编程的基本用法基于注解的实现在软件开发中,分散于应用中多出的功能被称为横切关注点如事务安全缓存等。 Java 程序媛手把手教你设计模式中的撩妹神技 -- 上篇 遇一人白首,择一城终老,是多么美好的人生境界,她和他历经风雨慢慢变老,回首走过的点点滴滴,依然清楚的记得当初爱情萌芽的模样…… Java 进阶面试问题列表 -...
摘要:当然,除了让我们显得更加专业之外,在自己所学习或者工作的项目中,适当合理的使用设计模式,能够给项目带来很大的好处。 简单说两句 本文首发公众号【一名打字员】 对不住各位老铁了,年前说好要更几波JAVA的东西,又偷懒了,没办法,在这里用小锤锤偷偷锤了自己几下。由于工作原因,更新时间不定,各位老铁有问题可以私聊我哈。 对于初学者或者是正在向中高级的Java程序猿(打字员)来说,时刻梳理自己...
阅读 2665·2021-11-11 16:54
阅读 3657·2021-08-16 10:46
阅读 3441·2019-08-30 14:18
阅读 3034·2019-08-30 14:01
阅读 2723·2019-08-29 14:15
阅读 2007·2019-08-29 11:31
阅读 3083·2019-08-29 11:05
阅读 2583·2019-08-26 11:54