代理模式
来源:互联网 发布:钢笔 知乎 编辑:程序博客网 时间:2024/06/02 07:09
代理模式
代理模式:为其他对象提供一种代理以控制这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理模式可以在客户端与目标对象之间起到中介的作用。
具体角色:
抽象角色(Subject):通过接口或抽象类声明真实角色实现的业务方法。
代理角色(Proxy):实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑来实现抽象方法,并可附加自己的操作。
真实角色(RealSubject):实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
UML
例:
需求:
有一个追求者想要追一个女孩,给她送礼物,但是不好意思自己送,就找了个一个中间人给女生送礼物。
代码实现:
抽象角色:
/** * 代理模式 * 抽象接口:定义送礼物的行为 * */public interface GiveGift { void giveFlower(); void giveChocolate();}
真实角色:
/** * 代理模式 * 真实角色:追求者 * */public class Hunter implements GiveGift{ private String girlName; public Hunter(String girlName){ this.girlName=girlName; } @Override public void giveFlower() { // TODO Auto-generated method stub System.out.println("送给"+girlName+"花"); } @Override public void giveChocolate() { // TODO Auto-generated method stub System.out.println("送给"+girlName+"巧克力"); }}
代理角色:
/** * 代理模式 * 代理对象:追求者与被追求者的中间人 * */public class Middleman implements GiveGift { private Hunter hunter; public Middleman(String girlName){ if (hunter==null) { hunter=new Hunter(girlName); } } @Override public void giveFlower() { // TODO Auto-generated method stub hunter.giveFlower(); } @Override public void giveChocolate() { // TODO Auto-generated method stub hunter.giveChocolate(); }}
客户端:
public class Client { public static void main(String[] args) { GiveGift giveGift=new Middleman("李娇娇"); giveGift.giveFlower(); giveGift.giveChocolate(); }}
阅读全文
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- new/malloc和delete/free的区别
- VUE UI框架
- bzoj 1196 [HNOI2006]公路修建问题 二分+并查集
- 【模板】各种欧几里得
- 开发者账号申请以及所需资料
- 代理模式
- 使用c++类需要注意的三件事?
- H
- Android 最常用的设计模式五 安卓源码分析——建造者模式
- 小结
- 【模板】并查集
- 趣题学算法之栈及其应用-Web导航
- 关于Qt设计师中相关设置问题
- 计算特殊数字