【设计模式】以国足的例子来解释代理模式,希望自己不要被退钱
1 代理模式
1.1 代理模式的解释
通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真是对象的一个替身,这种机制被称为代理模式。通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。
代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文为 Proxy 或 Surrogate,他是一种对象结构模型。
1.2 代理模式的四个对象
抽象对象:一般会使用接口或者抽象类解决
真实角色:被代理的角色
代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
客户:访问代理对象的人
2 例子
2.1 释义
Cup:代表世界杯
FootballTeam:国足
Client:我们
我们想要国足冲出亚洲,杀进世界杯!
2.2 代码
Cup.interface
FootballTeam.java
Client.java
2.3 效果图
最终国足成功冲出了亚洲,但是国足真的有这个实力吗?一向直性子的范大将军一马当先说出了自己的见解:"中国足球脸都不要了"
与此同时,朱雀体育台的足球场也是硝烟滚滚,一群红衣男子的出现,让这场比赛变得不再平凡。
歇斯底里的怒吼,酣畅淋漓的表达了对国足的爱
3 静态代理模式
可是,我们知道国足还是国足,但是我们不再是我们。
于是乎,我们找来了更具杀伤力的武器---"外援"(Proxy),在本设计模式中也就是代理。
3.1 解释
国足要冲出亚洲,但是没有这个能力,所以他找来了"外援",外援要带领国足冲出亚洲,与此同时外援还不吃海参、刻苦训练。
在本例子中,抽象角色就是 Cup,真实角色就是国足 FootballTeam,国足要冲出亚洲,但是没有那个能力。于是让代理角色"外援"进来帮助我们,外援代理可以让国足冲出亚洲,同时还有一些附属操作:不吃海参、刻苦训。,身为客户的我们,就可以看到一场惊魂动魄的比赛,"外援"和国足球员同心合力,最终冲出亚洲!
3.2 代码
Cup.interface
FootballTeam.java
ForeignAid.java
Client.java
3.3 效果图
4 代理模式的优缺点
4.1 代理模式的优点
可以使真实角色的操作更加的纯粹!不用去关注一些公共的业务。
公共业务交给代理角色!实现了业务分工,如国足只是表达了要冲出亚洲的"决心",其他的由"外援"去解决。
公共业务发生扩展的时候,方便集中管理。
4.2 代理模式的缺点
一个真实角色就会产生一个代理角色,代码量会翻倍。
以上例子,仅为调侃,期待国足能够屡败屡战,真正为中国人争光!
版权声明: 本文为 InfoQ 作者【游坦之】的原创文章。
原文链接:【http://xie.infoq.cn/article/aa14a10ee831e1e440b07f3ba】。文章转载请联系作者。
评论