系列文章
【设计模式】七大设计原则
【设计模式】第一章:单例模式
【设计模式】第二章:工厂模式
【设计模式】第三章:建造者模式
【设计模式】第四章:原型模式
【设计模式】第五章:适配器模式
【设计模式】第六章:装饰器模式
【设计模式】第七章:代理模式
【设计模式】第八章:桥接模式
【设计模式】第九章:外观模式 / 门面模式
【设计模式】第十章:组合模式
【设计模式】第十一章:享元模式
【设计模式】第十二章:观察者模式
【设计模式】第十三章:模板方法模式
【设计模式】第十四章:策略模式
【设计模式】第十五章:责任链模式
【设计模式】第十六章:迭代器模式
【设计模式】第十七章:状态模式
【设计模式】第十八章:备忘录模式
【设计模式】第十九章:访问者模式
【设计模式】第二十章:解释器模式
【设计模式】第二十一章:命令模式
【设计模式】第二十二章:中介者模式
一、定义
摘自百度百科: 所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网上连接、存储器中的大对象、文件或其它昂贵或无法复制的资源。
二、角色分类
抽象主题角色(Subject)
定义了代理角色和真实主题角色的共同接口,代理角色通过该接口调用真实主题角色的方法。
真实主题角色(Real Subject)
实现了抽象主题角色的接口,代表真实的业务对象。
代理角色(Proxy)
实现了抽象主题角色定义的接口,并持有真实主题角色的引用,代表了真实主题角色的代理。在代理角色中,可以添加额外的功能,如记录日志、权限控制等,而这些功能并不是真实主题角色本身所具备的功能
客户(Client)
具体调用代理者的角色
三、UML图
四、实现方式
需求分析
假如我们有一个这样的场景:我们想要去看电影,但是我们嫌麻烦不想去电影院排队买票,这时候我们可以选择第三方的平台来买票,并且代理会为我们处理一切的购票相关的事务,包括选座、付款等。其实这种模式就相当于我们设计模式中的代理模式,其代理第三方平台,接下来我们用代码来实现一下这个业务。
具体实现
简单实现
抽象主题角色(Subject)
public interface Subject {
void request();
}
真实主题角色(Real Subject)
public class RealSubject implements Subject