摘要:代理模式,看這名字就知道重點是代理。所謂代理,可以理解為中介或者中間人例如小明喜歡一個好看的菇涼但不好意思,找到朋友小藍像好看菇涼送禮物。為了更好的解釋這個,決定百度百科為其他對象提供一種代理以控制對這個對象的訪問。
代理模式,看這名字就知道重點是代理。所謂代理,可以理解為中介或者中間人
例如:小明喜歡一個好看的菇涼但不好意思,找到朋友小藍像好看菇涼送禮物。這個時候小藍就是這個代理
使用代理模式 需要了解三個東西
抽象角色: 接口或者抽象類要什么真實角色實現的業務方法(送花送禮物)
代理角色:實現抽象角色,是真實角色的代理,可以實現真實角色的實現的抽象方法,從而形成代理
真實角色:實現抽象角色的方法或者功能,讓代理角色實現這些功能
代碼如下:
抽象角色
interface GiveGift {
? ?void Give();
? ?void GiveDolls();
? ?void GiveFlowers();
? ?void GiveChocolate();
}
代理角色
public class Proxy implements GiveGift {
? ?Pursuit pursuit = null;
? ?public Proxy(SchoolGirl mm){
? ? ? ?this.pursuit = new Pursuit(mm);
? }
? ?@Override
? ?public void Give() {
? ? ? ?pursuit.Give();
? }
? ?@Override
? ?public void GiveDolls() {
? ? ? ?pursuit.GiveDolls();
? }
? ?@Override
? ?public void GiveFlowers() {
? ? ? ?pursuit.GiveFlowers();
? }
? ?@Override
? ?public void GiveChocolate() {
? ? ? ?pursuit.GiveChocolate();
? }
}
真實角色
public class Pursuit implements GiveGift {
? ?SchoolGirl schoolGirl = null;
? ?public Pursuit( SchoolGirl schoolGirl ){
? ? ? ?this.schoolGirl = schoolGirl;
? }
? ?@Override
? ?public void Give() {
? ? ? ?System.out.println("喜歡的女孩-->"+schoolGirl.getName());
? }
? ?@Override
? ?public void GiveDolls() {
? ? ? ?System.out.println("送洋娃娃");
? }
? ?@Override
? ?public void GiveFlowers() {
? ? ? ?System.out.println("送你鮮花");
? }
? ?@Override
? ?public void GiveChocolate() {
? ? ? ?System.out.println("送你巧克力");
? }
}
這是一個好看的菇涼
public class SchoolGirl {
? ?private String name;
? ?public String getName() {
? ? ? ?return name;
? }
? ?public void setName(String name) {
? ? ? ?this.name = name;
? }
}
在main方法中實現
? SchoolGirl schoolGirl = new SchoolGirl();
? ? ? ?schoolGirl.setName("好看菇涼");
? ? ? ?Proxy proxy = new Proxy(schoolGirl);
? ? ? ?proxy.Give();
? ? ? ?proxy.GiveChocolate();
? ? ? ?proxy.GiveDolls();
? ? ? ?proxy.GiveFlowers();
好看菇涼在不知道小明的情況下就通過小藍得到了小明的禮物。
為了更好的解釋這個,決定百度百科
為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。
優點
(1).職責清晰
真實的角色就是實現實際的業務邏輯,不用關心其他非本職責的事務,通過后期的代理完成一件完成事務,附帶的結果就是編程簡潔清晰。
(2).代理對象可以在客戶端和目標對象之間起到中介的作用,這樣起到了中介的作用和保護了目標對象的作用。
(3).高擴展性
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70919.html
摘要:下面總結了它倆的異同相同點都需要實現同一個接口或者繼承同一個抽象類,并且代理角色和裝飾角色都持有被代理角色和構件角色的引用。 寫完上一篇之后有小伙伴問我有沒有寫過代理模式,想看看我的理解。原本我的設計模式系列是按照創建型-行為型-結構型的順序寫下去的,既然小伙伴誠心誠意了,我就大發慈悲的穿插一篇代理模式。開玩笑,題外話。 說起代理模式,就不由得想起經紀人,說起經紀人,就想起了...對,...
摘要:簡介代理模式和裝飾者模式是兩種常見的設計模式。這里通過構造函數的參數將被代理對象傳入到代理中,也可以通過其它方式,如提供一個方法。下面是的代碼輸出首先依然是先創建一個需要被代理的對象,然后把它傳入到的構造函數中。 簡介 代理模式和裝飾者模式是兩種常見的設計模式。代理模式是為其它對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以...
摘要:代理設計模式代理模式為其他對象提供一種代理以控制對這個對象的訪問。代理模式是常見的設計模式之一是指不直接調用實際的對象,而是通過代理對象,來間接的調用實際的對象。對象類定義了代理對象所代表的目標對象。 代理設計模式 代理模式:為其他對象提供一種代理以控制對這個對象的訪問。代理模式是常見的設計模式之一,是指不直接調用實際的對象,而是通過代理對象,來間接的調用實際的對象。為什么要采用這種間...
閱讀 923·2023-04-26 01:34
閱讀 3356·2023-04-25 20:58
閱讀 3263·2021-11-08 13:22
閱讀 2108·2019-08-30 14:17
閱讀 2522·2019-08-29 15:27
閱讀 2673·2019-08-29 12:45
閱讀 2996·2019-08-29 12:26
閱讀 2811·2019-08-28 17:51