Java代理模式的示例详解
1.代理模式
当用户和某个对象打交道,但是程序可能不希望用户之间访问该对象,而是提供一个中间对象来和用户打交道。这个中间对象就被称为代理对象。这种模式被称为代理模式。
代理模式的特点:
代理对象和被代理对象实现相同的接口。
当用户需要访问某个方法时,首先是调用的代理的方法,代理可能要验证某些信息或检查它所代理的对象是否可用。如果可用,代理就会调用被代理对象同样的方法。
2.如何实现
1)定义一个接口,由代理和被代理对象共同实现。
2)被代理对象,实现接口定义的方法。
3)代理对象,实现接口定义的方法。代理对象要持有被代理对象的引用。
3.代码实现
1)定义共同的接口
/** * 定义由代理和被代理所要实现的共同接口 */ public interface CarInterface { public abstract boolean hasCar(String name); }
2)创建被代理对象
/** * 被代理对象,负责正在的业务逻辑处理,幕后大Boss */ public class CarFactory implements CarInterface { @Override public boolean hasCar(String name) { //做一些逻辑判断 return true; } }
3)代理实现
/** * 代理对象 * 1.实现同一个接口 * 2.持有被代理对象的引用 */ public class CarProxy implements CarInterface { CarFactory factory ; CarProxy(){ factory = new CarFactory(); } @Override public boolean hasCar(String name) { //调用被代理对象的方法 return factory.hasCar(name); } }
4)测试代码
public class ProxyMain { public static void main(String args []){ CarProxy shop = new CarProxy(); boolean hasCar = shop.hasCar("BYD"); System.out.println("hasCar "+hasCar); } }
4.拓展
在Android中我们调用getSystemService(string),拿到的对象,都是代理对象。最终都会通过Binder通信的方法,交给真正的SystemService进行处理,比如ActivityManagerService,WindManagerService等等。其实,这就行运用Binder跨进程通讯实现远程代理。这里不再赘述,后面会专门写文章进行讲解。
到此这篇关于Java代理模式的示例详解的文章就介绍到这了,更多相关Java代理模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解idea文件右键创建New没有Create New Servlet的解决办法
这篇文章主要介绍了详解idea文件右键创建New没有Create New Servlet的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-12-12如何在SpringBoot中使用logback优化异常堆栈的输出详解
最近项目中整合了logback,所以下面这篇文章主要给大家介绍了关于如何在SpringBoot中使用logback优化异常堆栈的输出,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-05-05Springboot集成spring data elasticsearch过程详解
这篇文章主要介绍了springboot集成spring data elasticsearch过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-04-04浅谈java中unmodifiableList方法的应用场景
下面小编就为大家带来一篇浅谈java中unmodifiableList方法的应用场景。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-06-06springMvc和mybatis-plus中枚举值和字段的映射
这篇文章主要为大家介绍了springMvc和mybatis-plus中枚举值和字段的映射示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-05-05
最新评论