<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
模式: 代理模式
案例: 大奔代乾孃賣酒
代理模式的定義: 由於某些原因需要給某物件提供一個代理以控制對該物件的存取。這時,存取物件不適合或者不能直接參照目標物件,代理物件作為存取物件和目標物件之間的中介。
1、代理模式在使用者端與目標物件之間起到一箇中介作用和保護目標物件的作用;
2、代理物件可以擴充套件目標物件的功能;
3、代理模式能將使用者端與目標物件分離,在一定程度上降低了系統的耦合度,增加了程式的可延伸性
1、代理模式會造成系統設計中類的數量增加
2、在使用者端和目標物件之間增加一個代理物件,會造成請求處理速度變慢;
3、增加了系統的複雜度;
代理模式的結構比較簡單,主要是通過定義一個繼承抽象主題的代理來包含真實主題,從而實現對真實主題的存取,下面來分析其基本結構和實現方法。
案例: 大奔代乾孃賣酒
抽象主題(Subject)類:賣酒
真實主題(Real Subject)類:乾孃的酒館
代理(Proxy)類:大奔的酒攤
大奔來乾孃的酒館前面擺了個攤代理賣酒的生意。
一個賣酒介面,宣告了一個賣酒的抽象方法
public interface Jiu { void show(); }
乾孃的酒館類實現了賣酒的介面,並且實現了show()賣酒方法,宣告了一個酒的名字,和一個aa()方法提示大奔來擺攤了
public class GanNiang implements Jiu { private String name; GanNiang() { } GanNiang(String name) { this.name = name; aa(); } @Override public void show() { System.out.printf("賣出一罈%s", name); } public void aa() { System.out.println("大奔來擺攤了"); } }
大奔的酒攤類實現了賣酒介面,宣告了酒的名字和乾孃酒館的屬性,並且實現了賣酒方法。
public class DaBen implements Jiu { private String name; private GanNiang ganNiang; DaBen() { } DaBen(String name) { this.name = name; } @Override public void show() { if (ganNiang == null) { ganNiang = new GanNiang(name); } ganNiang.show(); } }
new一個大奔的酒攤,呼叫兩次show()方法,就相當於賣了兩次酒。
public class Demo { public static void main(String[] args) { DaBen daBen = new DaBen("女兒紅"); daBen.show(); System.out.println(); System.out.println(); daBen.show(); } }
這裡可以看出第一次賣酒和第二次賣酒輸出的結果不一樣,因為每一次賣酒都要去幹孃的酒館拿酒。大奔第一次來拿酒的時候通知乾孃,我來擺攤了,後面乾孃已經知道大奔來了所以再拿酒就不需要通知了。
代理模式就是找一個代理代替自己去執行,這樣只需要避免了重複new物件的浪費,並且可以找多個代理代替自己。
如:
1、Windows 裡面的快捷方式。
2、豬八戒去找高翠蘭結果是孫悟空變的,可以這樣理解:把高翠蘭的外貌抽象出來,高翠蘭本人和孫悟空都實現了這個介面,豬八戒存取高翠蘭的時候看不出來這個是孫悟空,所以說孫悟空是高翠蘭代理類。
3、買火車票不一定在火車站買,也可以去代售點。
4、一張支票或銀行存單是賬戶中資金的代理。支票在市場交易中用來代替現金,並提供對簽發人賬號上資金的控制。
到此這篇關於Java設計模式以虹貓藍兔的故事講解代理模式的文章就介紹到這了,更多相關Java代理模式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45