内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

java設(shè)計(jì)模式之委派模式如何實(shí)現(xiàn)

這篇文章給大家分享的是有關(guān)java設(shè)計(jì)模式之委派模式如何實(shí)現(xiàn)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

在軹城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需求定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都營(yíng)銷網(wǎng)站建設(shè),外貿(mào)營(yíng)銷網(wǎng)站建設(shè),軹城網(wǎng)站建設(shè)費(fèi)用合理。

委派模式(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();
  }
}

java設(shè)計(jì)模式之委派模式如何實(shí)現(xiàn)

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

看代碼,比較容易理解,這是一個(gè)特別簡(jiǎn)單的委派設(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();  // 更換委托對(duì)象
    c.f();   // output: B: doing f()
    c.g();   // output: B: doing g()
  }
}

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

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

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

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

Delegete : 譯為委托

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

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

感謝各位的閱讀!關(guān)于“java設(shè)計(jì)模式之委派模式如何實(shí)現(xiàn)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)站標(biāo)題:java設(shè)計(jì)模式之委派模式如何實(shí)現(xiàn)
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article28/jiedcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、關(guān)鍵詞優(yōu)化、網(wǎng)站收錄、網(wǎng)站設(shè)計(jì)域名注冊(cè)、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)
临江市| 福州市| 高密市| 苍梧县| 六枝特区| 武清区| 临泽县| 和田县| 宜宾县| 思茅市| 湘乡市| 巴马| 祁门县| 来宾市| 扎兰屯市| 太仓市| 元氏县| 桂平市| 马边| 清丰县| 郁南县| 万载县| 邹平县| 甘肃省| 通化市| 思南县| 理塘县| 郑州市| 深州市| 涞源县| 龙川县| 西乌珠穆沁旗| 永宁县| 大丰市| 盐边县| 南涧| 五华县| 涿鹿县| 乾安县| 上高县| 翁源县|