java 代理模式详解之静态代理
2017-01-18 00:51
267 查看
java的代理模式分为2种静态代理和动态代理
代理模式的基本概念
真实角色 需要被代理的对象
代理角色 代理类
抽象角色 真实角色和代理角色需要共同实现的接口(可以理解为代理角色无法为真实角色做的事(方法))
静态代理
以租房为例 真实角色 是租房子的人 代理角色是中介 交租和签合同这两个行为为抽象角色
类似的案例还有买车的行为 顾客与4s店就存在这种代理关系还有婚庆公司的案例
代码示例
静态代理总结
静态代理 3个基本概念 真实角色 代理角色 抽象角色(接口)
需要注意的是:抽象角色是指代理类无法为真实角色做的事情 把这些事情(行为) 封装进接口中
真实角色、代理角色实现相同的接口(抽象建角色)
代理角色必须持有对真实角色的引用(这样代理角色才能知道是在为谁做事)
代理模式的基本概念
真实角色 需要被代理的对象
代理角色 代理类
抽象角色 真实角色和代理角色需要共同实现的接口(可以理解为代理角色无法为真实角色做的事(方法))
静态代理
以租房为例 真实角色 是租房子的人 代理角色是中介 交租和签合同这两个行为为抽象角色
类似的案例还有买车的行为 顾客与4s店就存在这种代理关系还有婚庆公司的案例
代码示例
//抽象角色 代理角色无法为真实角色干的事情 public interface RentingHouseIn { void rentingHouse(); //付租金 void signContract(); //签合同 } //真实角色 public class Renter implements RentingHouseIn{ //租客 private String name; public Renter(String name) { this.name = name; } @Override public void rentingHouse() { //付租金 System.out.println(name + " 租房子 付租金"); } @Override public void signContract() { System.out.println(name + "和房东签合同"); } public String getName() { return name; } } //代理角色需要持有真实角色的引用(通俗点讲就是中介需要知道帮谁在租房) public class Intermediary implements RentingHouseIn { //房产中介 private Renter renter; //租客 public Intermediary(Renter renter) { //通过构造器的方式这样中介就能知道在为谁做事 this.renter = renter; } @Override public void rentingHouse() { System.out.println("中介给"+renter.getName()+"找房源"); //代理类可以帮你做的事情 signContract(); renter.rentingHouse(); //这个就是无法被代理的 需要真实角色自己动手的 System.out.println("中介帮你。。。。"); } @Override public void signContract() { //签合同 renter.signContract(); } } //测试类 public class TestClient { //测试类 public static void main(String[] args) { Renter renter = new Renter("张三"); //构造一个租客出来 //构造一个中介出来 代表 张三找中介租房 这中行为 Intermediary Intermediary = new Intermediary(renter); //张三找中介 Intermediary.rentingHouse();//中介帮张三租房 System.out.println("-----------------------------"); Renter renter2 = new Renter("李四"); Intermediary Intermediary2 = new Intermediary(renter2); //李四找中介 Intermediary2.rentingHouse();//中介帮李四租房 } } //测试结果 中介给张三找房源 张三和房东签合同 张三 租房子 付租金 中介帮你。。。。 ----------------------------- 中介给李四找房源 李四和房东签合同 李四 租房子 付租金 中介帮你。。。。
静态代理总结
静态代理 3个基本概念 真实角色 代理角色 抽象角色(接口)
需要注意的是:抽象角色是指代理类无法为真实角色做的事情 把这些事情(行为) 封装进接口中
真实角色、代理角色实现相同的接口(抽象建角色)
代理角色必须持有对真实角色的引用(这样代理角色才能知道是在为谁做事)
相关文章推荐
- JAVA 静态代理模式详解及实例应用
- Java模式中的静态代理与动态代理
- java 设计模式之四-代理模式 java静态代理和动态代理
- Java设计模式---静态代理
- JAVA 设计模式:静态代理VS动态代理
- 黑马程序员--Java学习笔记之面向对象思想(单例模式详解、匿名对象、静态、final)
- Java 代理模式详解
- java设计模式之静态代理模式
- 黑马程序员:Java基础总结----静态代理模式&动态代理
- java设计模式---静态代理(简单笔记)
- java设计模式学习笔记3 代理模式-静态代理
- java设计模式之静态代理
- 使用自动生成java文件和自动编译的静态代理模式-马士兵设计模式教程
- 黑马程序员:Java基础总结----静态代理模式&动态代理
- [转]转个经典的帖子:说故事学设计模式之-Java静态代理模式
- java 静态代理与动态代理(代理模式)
- Java 代理模式详解
- java 代理模式(静态代理+动态代理)
- java 设计模式之单利模式以及代理模式(静态)
- Java中的代理模式----静态代理和动态代理