最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java設(shè)計(jì)模式之委派模式原理分析

 更新時(shí)間:2019年10月17日 14:15:27   作者:桂長江  
這篇文章主要介紹了java設(shè)計(jì)模式之委派模式原理分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

委派模式(Delegate)原理:

類B和類A是兩個(gè)互相沒有任何關(guān)系的類,但是B具有和A一模一樣的方法和屬性;并且調(diào)用B中的方法/屬性就是調(diào)用A中同名的方法和屬性。

B好像就是一個(gè)受A授權(quán)委托的中介,第三方的代碼不需要知道A的存在,也不需要和A發(fā)生直接的聯(lián)系,通過B就可以直接使用A的功能,這樣既能夠使用到A的各種公能,又能夠很好的將A保護(hù)起來。

委派模式使得我們可以用聚合來代替繼承,看如下代碼:

// 類模擬打印機(jī)Printer擁有針式打印機(jī)RealPrinter的實(shí)例
//Printer擁有的方法print()將處理轉(zhuǎn)交給RealPrinter的print()方法
package Paint;

class RealPrinter { 
  void print() {
    System.out.print("something");
  }
}

class Printer { 
  RealPrinter p = new RealPrinter(); // 委派
  void print() {
    p.print();
  }
}

public class Main {
  public static void main(String[] args) {
    Printer printer = new Printer();
    printer.print();
  }
}

執(zhí)行結(jié)果

看代碼,比較容易理解,這是一個(gè)特別簡單的委派設(shè)計(jì)模式。如果可以使用接口,那委派可以做到類型更安全并且更加靈活。我們看下面這個(gè)例子:

/***在這個(gè)例子里,類C可以委托類A或類B,類C擁有方法使自己可以在類A或類B間選擇。因?yàn)轭怉或類B必須實(shí)現(xiàn)接口I規(guī)定的方法,所以在這里委托是類型安全的。**/
package Paint;

interface I {
  void f();
  void g();
}

class A implements I {
  public void f() {
    System.out.println("A: doing f()");
  }
  public void g() {
    System.out.println("A: doing g()");
  }
}

class B implements I {
  public void f() {
    System.out.println("B: doing f()");
  }
  public void g() {
    System.out.println("B: doing g()");
  }
}

class C implements I {
  I i = new A();
  public void f() {
    i.f();
  }
  public void g() {
    i.g();
  }
  public void toA() {
    i = new A();
  }
  public void toB() {
    i = new B();
  }
}

public class Main {
  public static void main(String[] args) {
    C c = new C();
    c.f();   // output: A: doing f()
    c.g();   // output: A: doing g()
    c.toB();  // 更換委托對象
    c.f();   // output: B: doing f()
    c.g();   // output: B: doing g()
  }
}

委托的缺點(diǎn):代碼量大,類更多。

----- delegate委派模式和Proxy代理模式 -----

Proxy :譯為代理, 被代理方(B)與代理方(A)的接口完全一致。

主要使用場景:為簡化編程(或無法操作B)而把請求交給代理方(A),由代理方與被代理方進(jìn)行通信,以完成請求。

Delegete : 譯為委托

主要使用場景:一件事情(或一個(gè)請求)對象本身不知道怎樣處理,對象把請求交給其它對象來做。

簡單來講,可以這么理解,代理是若干個(gè)對象實(shí)現(xiàn)了一個(gè)共同的接口,而委派只是說明一個(gè)對象引用了另一個(gè)對象,并不牽扯接口。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Cloud之遠(yuǎn)程調(diào)用OpenFeign參數(shù)傳遞

    Spring Cloud之遠(yuǎn)程調(diào)用OpenFeign參數(shù)傳遞

    本文介紹了Spring Cloud中使用OpenFeign進(jìn)行遠(yuǎn)程調(diào)用時(shí),參數(shù)傳遞的不同方式,包括傳遞單個(gè)參數(shù)、多個(gè)參數(shù)、對象和JSON數(shù)據(jù),感興的朋友一起看看吧
    2025-03-03
  • Java繼承與多態(tài)的正確打開方式

    Java繼承與多態(tài)的正確打開方式

    這篇文章主要為大家介紹了Java的繼承與多態(tài),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • springboot配置文件中屬性變量引用方式@@解讀

    springboot配置文件中屬性變量引用方式@@解讀

    這篇文章主要介紹了springboot配置文件中屬性變量引用方式@@解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • SpringBoot集成Jasypt敏感信息加密的操作方法

    SpringBoot集成Jasypt敏感信息加密的操作方法

    這篇文章主要介紹了SpringBoot集成Jasypt加密敏感信息,包括敏感信息加密的作用,項(xiàng)目集成Jasypt方式詳解,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • springboot實(shí)現(xiàn)添加郵件發(fā)送及壓縮功能

    springboot實(shí)現(xiàn)添加郵件發(fā)送及壓縮功能

    這篇文章主要介紹了springboot實(shí)現(xiàn)添加郵件發(fā)送及壓縮功能 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Java中方法優(yōu)先調(diào)用可選參數(shù)還是固定參數(shù)

    Java中方法優(yōu)先調(diào)用可選參數(shù)還是固定參數(shù)

    這篇文章主要介紹了Java中方法優(yōu)先調(diào)用可選參數(shù)還是固定參數(shù),可選參數(shù)是?JDK?5?中新增的特性,也叫變長參數(shù)或可變參數(shù),固定參數(shù)的概念恰好與可選參數(shù)相反,固定參數(shù)也就是普通的參,下文更多詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • SpringBoot中@Test的介紹和使用案例

    SpringBoot中@Test的介紹和使用案例

    SpringBoot提供了方便的測試功能,可以很容易地進(jìn)行單元測試和集成測試,這篇文章主要介紹了SpringBoot中@Test的介紹和使用,需要的朋友可以參考下
    2023-08-08
  • 使用Logback設(shè)置property參數(shù)方式

    使用Logback設(shè)置property參數(shù)方式

    這篇文章主要介紹了使用Logback設(shè)置property參數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Mybatis中#{}和${}傳參的區(qū)別及#和$的區(qū)別小結(jié)

    Mybatis中#{}和${}傳參的區(qū)別及#和$的區(qū)別小結(jié)

    這篇文章主要介紹了Mybatis中#{}和${}傳參的區(qū)別及#和$的區(qū)別小結(jié) 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • java壓縮文件和下載圖片示例

    java壓縮文件和下載圖片示例

    這篇文章主要為大家詳細(xì)介紹了java壓縮文件和下載圖片示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論

忻城县| 三亚市| 奉新县| 枣庄市| 乐都县| 尚志市| 兰州市| 七台河市| 伊吾县| 宜丰县| 长乐市| 策勒县| 巢湖市| 中方县| 加查县| 伊吾县| 沐川县| 于都县| 德格县| 麻栗坡县| 尉犁县| 乌鲁木齐市| 罗城| 香河县| 综艺| 岗巴县| 奉节县| 上饶县| 武平县| 邹城市| 调兵山市| 资溪县| 铁岭县| 奉贤区| 武夷山市| 石城县| 焉耆| 大荔县| 临沂市| 瓦房店市| 石楼县|