JAVA静态代理模式(从现实生活角度理解代码原理)
2016-11-22 20:48
731 查看
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。
代理模式说白了就是“真实对象”的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途。
在这实现代码之前,先讲一个简单的生活故事,我们都知道我们周边有很多公司有房屋买卖或租赁的业务,比如链家(LianJia),但链家本身是不存在任何实际房屋资产的,他所售卖租赁的房屋均需要房屋产权所有人(HomeMaster)提供,才得以实现公司的房源需求;同时公司要的卖房租房业务均需要公司员工(Seller)来实现,但员工要实现该方法,必须经过公司授权以及动用公司的业务资源渠道才可以完成任务。故事讲到这里,我们应该清楚这里的Seller其实就是代理模式中静态代理了,那么我们开始该模式的代码书写(这里省略了代理实现方法前后的业务逻辑):
代理模式说白了就是“真实对象”的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途。
在这实现代码之前,先讲一个简单的生活故事,我们都知道我们周边有很多公司有房屋买卖或租赁的业务,比如链家(LianJia),但链家本身是不存在任何实际房屋资产的,他所售卖租赁的房屋均需要房屋产权所有人(HomeMaster)提供,才得以实现公司的房源需求;同时公司要的卖房租房业务均需要公司员工(Seller)来实现,但员工要实现该方法,必须经过公司授权以及动用公司的业务资源渠道才可以完成任务。故事讲到这里,我们应该清楚这里的Seller其实就是代理模式中静态代理了,那么我们开始该模式的代码书写(这里省略了代理实现方法前后的业务逻辑):
1 interface LianJia{//LianJia提供房屋买卖的渠道方法(公司业务) 2 public void sellHouse(); 3 } 4 class HomeMaster implements LianJia{//房主需要通过链家卖房(实现公司的业务渠道) 5 public void sellHouse(){ 6 System.out.println("我有套房子要卖"); 7 } 8 } 9 class Seller implements LianJia{//链家的业务需要Seller实现 10 private LianJia lj;//声明链家公司(可理解为必须证明该seller是链家的),方便调用方法 11 public Seller(LianJia lj){ 12 this.lj = lj; 13 } 14 public void sellHouse(){ 15 lj.sellHouse();//实际实现方式需要调用公司的业务渠道方法 16 } 17 } 18 public class ProxyMode{ 19 public static void main(String[] args){ 20 HomeMaster hm = new HomeMaster(); 21 Seller s = new Seller(hm);//代理代房主实现卖房需求 22 s.sellHouse(); 23 } 24 }
相关文章推荐
- JAVA动态代理模式(从现实生活角度理解代码原理)
- JAVA动态代理模式(从现实生活角度理解代码原理)
- JAVA动态代理模式(从现实生活角度理解代码原理)
- JAVA模板方法设计模式(从现实生活角度理解代码原理)
- JAVA装饰者模式(从现实生活角度理解代码原理)
- JAVA模板方法设计模式(从现实生活角度理解代码原理)
- JAVA装饰者模式(从现实生活角度理解代码原理)
- JAVA适配器模式(从现实生活角度理解代码原理)
- JAVA适配器模式(从现实生活角度理解代码原理)
- JAVA简单工厂模式(从现实生活角度理解代码原理)
- JAVA装饰者模式(从现实生活角度理解代码原理)
- JAVA简单工厂模式(从现实生活角度理解代码原理)
- JAVA简单工厂模式(从现实生活角度理解代码原理)
- Java设计模式之代理模式原理及实现代码分享
- JAVA的回调函数和反射机制(原理不说直接看代码),补充动静态代理
- 设计模式——代理模式(理解静态代理和动态代理+代码)
- 对代理模式与Java动态代理类的理解(转)
- Java设计模式-----Proxy模式(静态代理)
- Java模式中的静态代理与动态代理
- 理解Android系统的进程间通信原理(一)----RPC中的-代理模式 -RMI-RPC