java 代理模式详解之静态代理
来源:互联网 发布:java输入scanner 编辑:程序博客网 时间:2024/05/16 10:02
java的代理模式分为2种静态代理和动态代理
代理模式的基本概念
真实角色 需要被代理的对象
代理角色 代理类
抽象角色 真实角色和代理角色需要共同实现的接口(可以理解为代理角色无法为真实角色做的事(方法))
静态代理
以租房为例 真实角色 是租房子的人 代理角色是中介 交租和签合同这两个行为为抽象角色
类似的案例还有买车的行为 顾客与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个基本概念 真实角色 代理角色 抽象角色(接口)
需要注意的是:抽象角色是指代理类无法为真实角色做的事情 把这些事情(行为) 封装进接口中
真实角色、代理角色实现相同的接口(抽象建角色)
代理角色必须持有对真实角色的引用(这样代理角色才能知道是在为谁做事)
1 0
- java 代理模式详解之静态代理
- java 代理模式之 静态代理
- Java 模式 之 静态代理
- java代理模式之静态代理与动态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- 代理模式之静态代理
- java代理模式---静态代理
- JAVA代理模式--静态代理
- Java代理模式-静态代理
- Java代理模式 静态代理 动态代理
- 27.httpClien提交数据
- thinkphp模型$_auto自动完成设置为插入时更新操作也变化的解决办法
- 包含123数字的排序,次数尽量最少
- 【Android】RecyclerView具体用法
- 绘图,数组就是一个大变量,非常特殊的变量而已
- java 代理模式详解之静态代理
- SAS SATA SSD IDE硬盘介绍区别
- 【Cocos\杂谈】Windows下Cocos2d-x 3.14环境搭建
- 回文数
- codeforces 755D PolandBall and Polygon(直线分割平面-树状数组优化查询)
- 【Android】给RecyclerView添加分割线的步骤
- 关于Oracle误操作--数据被Commit后的数据回退恢复(闪回)
- Tomcat(一) Tomcat是什么:Tomcat与Java技术 Tomcat与Web应用 以及 Tomcat基本框架及相关配置
- Tomcat(二) Tomcat实现:Servlet与web.xml介绍 以及 源码分析Tomcat实现细节