设计模式之代理模式
来源:互联网 发布:php curl发送get请求 编辑:程序博客网 时间:2024/06/15 11:23
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。
二、代理模式
代理模式的UML图如下:
代理模式一般会有三个角色:
抽象角色(Subject):指代理角色和真实角色对外提供的公共方法,一般为一个接口。
真实角色(RealSubject):需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以供代理角色调用,也就是真正的业务逻辑在此。
代理角色(Proxy):需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法。
二、案例分析
我们都知道《西游记》中去往西天取经的是师徒四人,但其实唐僧是代替唐太宗去往西天取经的。不信,你看书中第十二回《玄奘秉诚建大会 观音显象化金蝉》中这样描绘:
太宗见了颂子,即命众僧:“且收胜会,待我差人取得大乘经来,再秉丹诚,重修善果。”众官无不遵依。当时在寺中问曰:“谁肯领朕旨意,上西天拜佛求经?”问不了,旁边闪过法师,帝前施礼道:“贫僧不才,愿效犬马之劳,与陛下求取真经,祈保我王江山永固。”唐王大喜,上前将御手扶起道:“法师果能尽此忠贤,不怕程途遥远,跋涉山川,朕情愿与你拜为兄弟。”
在世人看来,这经就是唐僧给取回来的,但只有皇帝知道,这经是唐僧替自己取回来的。这就是一个简单的代理模式,其UML图如下:
Subject–Person类,不管是皇帝还是唐僧,都要完成取经的任务。
abstract class Person(){ public void takeBook();}
RealSubject–实际完成的是唐太宗的旨意。
class Emperor extends Person(){ public void takeBook(){ System.out.println("我是皇帝,我要上西天拜佛求经。"); }}
Proxy–唐僧,代替皇帝完成取经任务。
class TangMonk extends Person(){ Emperor emperor = new Emperor(); public void takeBook(){ emperor.takeBook(); }}
故事上演:
public class Story(){ public static void main (String [] args){ TangMonk tangMonk = new TangMonk(); tangMonk.takeBook(); }}
运行结果:
我是皇帝,我要上西天拜佛求经。
综上就是一个代理模式的例子,点击更多设计模式。
阅读全文
1 0
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之 代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-----代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- Mariadb数据库的部署及管理
- Java学习中遇到的问题
- 26.Struts2_类型转换错误消息的显示和定制
- 2017 ACM-ICPC Asia Xi’an Regional Contest G 线段树+拆位
- 第九届山东理工大学ACM网络编程擂台赛 正式赛 sdut4080 UMR's dress
- 设计模式之代理模式
- 171121之TotoiseSVN的基本使用方法
- interrupt,interrupted,isInterrupted三者区别【附例子】
- 什么是消息队列?
- Introduction To Apache Spark(1)
- Tornado数据库操作
- java_day2
- Spring cloud系列十一 @Feign集成的Hystrix进行个性化配置及集成原理
- D