国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式(8)外觀模式

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式(8)外觀模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、

1、使用背景:降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡化客戶端之間的接口。

2、定義:

為子系統(tǒng)中的一組接口定義一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。完美地體現(xiàn)了依賴倒轉(zhuǎn)原則和迪米特法則的思想。

3、結(jié)構(gòu)圖:

設(shè)計(jì)模式(8)外觀模式,設(shè)計(jì),設(shè)計(jì)模式,外觀模式

設(shè)計(jì)模式(8)外觀模式,設(shè)計(jì),設(shè)計(jì)模式,外觀模式?4、代碼:

// 子系統(tǒng)接口
interface SubsystemA {
void operationA();
}

interface SubsystemB {
void operationB();
}

// 子系統(tǒng)實(shí)現(xiàn)
class ConcreteSubsystemA implements SubsystemA {
public void operationA() {
System.out.println("SubsystemA operation");
}
}

class ConcreteSubsystemB implements SubsystemB {
public void operationB() {
System.out.println("SubsystemB operation");
}
}

// 外觀類
class Facade

{
private SubsystemA subsystemA;
private SubsystemB subsystemB;

public Facade() {
subsystemA = new ConcreteSubsystemA();
subsystemB = new ConcreteSubsystemB();
}

public void operation() {
subsystemA.operationA();
subsystemB.operationB();
}
}

// 客戶端代碼
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.operation();
}
}

5、優(yōu)缺點(diǎn):

?(1)優(yōu)點(diǎn):

  • 減少系統(tǒng)相互依賴。
  • 提高靈活性。
  • 提高了安全性。

?(2)缺點(diǎn):

? ? ? 不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適;

? ? ?不能很好地限制客戶使用子系統(tǒng)類,如果對(duì)客戶訪問子系統(tǒng)類做太多的限制則減少了可變性和? 靈活性;

? ? ?在不引入抽象外觀類的情況下,增加新的子系統(tǒng)可能需要修改外觀類或客戶端的源代碼,違背了“開閉原則”。

二、與其他設(shè)計(jì)模式的聯(lián)系:

  • 外觀模式為現(xiàn)有對(duì)象定義了一個(gè)新接口, 適配器模式則會(huì)試圖運(yùn)用已有的接口。 適配器通常只封裝一個(gè)對(duì)象, 外觀通常會(huì)作用于整個(gè)對(duì)象子系統(tǒng)上。

  • 當(dāng)只需對(duì)客戶端代碼隱藏子系統(tǒng)創(chuàng)建對(duì)象的方式時(shí), 你可以使用抽象工廠模式來代替外觀。

  • 享元模式展示了如何生成大量的小型對(duì)象, 外觀則展示了如何用一個(gè)對(duì)象來代表整個(gè)子系統(tǒng)。

  • 外觀和中介者模式的職責(zé)類似: 它們都嘗試在大量緊密耦合的類中組織起合作。

    • 外觀為子系統(tǒng)中的所有對(duì)象定義了一個(gè)簡單接口, 但是它不提供任何新功能。 子系統(tǒng)本身不會(huì)意識(shí)到外觀的存在。 子系統(tǒng)中的對(duì)象可以直接進(jìn)行交流。
    • 中介者將系統(tǒng)中組件的溝通行為中心化。 各組件只知道中介者對(duì)象, 無法直接相互交流。
  • 外觀類通??梢赞D(zhuǎn)換為單例模式類, 因?yàn)樵诖蟛糠智闆r下一個(gè)外觀對(duì)象就足夠了。

  • 外觀與代理模式的相似之處在于它們都緩存了一個(gè)復(fù)雜實(shí)體并自行對(duì)其進(jìn)行初始化。 代理與其服務(wù)對(duì)象遵循同一接口, 使得自己和服務(wù)對(duì)象可以互換, 在這一點(diǎn)上它與外觀不同。

?三、使用場(chǎng)景:對(duì)于復(fù)雜難以維護(hù)的老系統(tǒng),可以為新系統(tǒng)開發(fā)一個(gè)外觀 Facade類,來提供設(shè)計(jì)粗糙或高度復(fù)雜的遺留代碼的比較清晰簡單的接口,讓新系統(tǒng)與Facade對(duì)象交互,F(xiàn)acade與遺留代碼交互所有復(fù)雜的工作。實(shí)現(xiàn)方法:文章來源地址http://www.zghlxwxcb.cn/news/detail-665521.html

  1. 考慮能否在現(xiàn)有子系統(tǒng)的基礎(chǔ)上提供一個(gè)更簡單的接口。 如果該接口能讓客戶端代碼獨(dú)立于眾多子系統(tǒng)類, 那么你的方向就是正確的。
  2. 在一個(gè)新的外觀類中聲明并實(shí)現(xiàn)該接口。 外觀應(yīng)將客戶端代碼的調(diào)用重定向到子系統(tǒng)中的相應(yīng)對(duì)象處。 如果客戶端代碼沒有對(duì)子系統(tǒng)進(jìn)行初始化, 也沒有對(duì)其后續(xù)生命周期進(jìn)行管理, 那么外觀必須完成此類工作。
  3. 如果要充分發(fā)揮這一模式的優(yōu)勢(shì), 你必須確保所有客戶端代碼僅通過外觀來與子系統(tǒng)進(jìn)行交互。 此后客戶端代碼將不會(huì)受到任何由子系統(tǒng)代碼修改而造成的影響, 比如子系統(tǒng)升級(jí)后, 你只需修改外觀中的代碼即可。
  4. 如果外觀變得過于臃腫, 你可以考慮將其部分行為抽取為一個(gè)新的專用外觀類。

到了這里,關(guān)于設(shè)計(jì)模式(8)外觀模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式:外觀模式

    外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它提供了一個(gè)統(tǒng)一的接口,用于訪問子系統(tǒng)中的一組接口。外觀模式隱藏了子系統(tǒng)的復(fù)雜性,使得客戶端能夠更簡單地使用子系統(tǒng)的功能。 外觀模式的核心思想是將復(fù)雜的子系統(tǒng)封裝在一個(gè)外觀類中,客戶端只需要與外觀類進(jìn)行交互,而不需

    2024年02月07日
    瀏覽(31)
  • 設(shè)計(jì)模式之~外觀模式

    設(shè)計(jì)模式之~外觀模式

    定義: ????????為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 結(jié)構(gòu)圖: 區(qū)分中介模式: 門面模式對(duì)外提供一個(gè)接口 中介模式對(duì)內(nèi)提供一個(gè)接口 優(yōu)點(diǎn): 松耦合:用戶與子系統(tǒng)解耦,屏蔽子系統(tǒng);可以

    2024年02月07日
    瀏覽(36)
  • js設(shè)計(jì)模式:外觀模式

    js設(shè)計(jì)模式:外觀模式

    將復(fù)雜的功能封裝成可以簡單調(diào)用的方法,無需知道內(nèi)部的具體邏輯,只需要知道怎么去使用 類似于一把槍,你可以不知道內(nèi)部的槍機(jī),擊發(fā)機(jī),復(fù)進(jìn)簧,槍管,導(dǎo)氣裝置,彈夾是怎么合作配合完成發(fā)射和自動(dòng)填彈,你只需要知道你扣動(dòng)扳機(jī)就能完成這一系列復(fù)雜的操作,而那個(gè)扳機(jī)就是

    2024年02月22日
    瀏覽(19)
  • 設(shè)計(jì)模式之外觀模式筆記

    設(shè)計(jì)模式之外觀模式筆記

    記錄下學(xué)習(xí)設(shè)計(jì)模式-外觀模式的寫法。JDK使用版本為1.8版本。 意圖 :為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 結(jié)構(gòu) : 其中: Facade知道哪些子系統(tǒng)類負(fù)責(zé)處理請(qǐng)求;將客戶的請(qǐng)求代理給適合的子系統(tǒng)

    2024年02月11日
    瀏覽(30)
  • Java設(shè)計(jì)模式-外觀模式

    在軟件開發(fā)過程中,經(jīng)常會(huì)遇到復(fù)雜的系統(tǒng)和龐大的類庫。這些系統(tǒng)往往包含了大量的類和子系統(tǒng),給開發(fā)人員帶來了挑戰(zhàn)。為了簡化接口設(shè)計(jì)和提高系統(tǒng)的可用性,設(shè)計(jì)模式提供了一種名為外觀模式的解決方案。 外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,旨在為復(fù)雜系統(tǒng)提供一個(gè)簡

    2024年02月05日
    瀏覽(25)
  • 設(shè)計(jì)模式之代理模式與外觀模式

    設(shè)計(jì)模式之代理模式與外觀模式

    目錄 代理模式 簡介 優(yōu)缺點(diǎn) 角色職責(zé) 實(shí)現(xiàn) 運(yùn)用場(chǎng)景 外觀模式 簡介 角色職責(zé) 優(yōu)缺點(diǎn) 實(shí)現(xiàn) 使用場(chǎng)景 由于某些原因需要給某對(duì)象提供一個(gè)代理以控制對(duì)該對(duì)象的訪問。這時(shí),訪問對(duì)象不適合或者不能直接引用目標(biāo)對(duì)象,代理對(duì)象作為訪問對(duì)象和目標(biāo)對(duì)象之間的中介 優(yōu)點(diǎn): ?

    2024年02月10日
    瀏覽(26)
  • 設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    目錄 什么是外觀模式 外觀模式的實(shí)現(xiàn) 外觀模式角色 外觀模式舉例 外觀模式類圖 外觀模式代碼實(shí)現(xiàn) 外觀模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 注意事項(xiàng) 應(yīng)用場(chǎng)景 總結(jié) ????????外觀模式(Facade Pattern):又叫作門面模式,歸屬于結(jié)構(gòu)型模式。外觀模式定義了提供了定義了一個(gè)統(tǒng)一的高層

    2024年02月16日
    瀏覽(25)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 外觀模式

    ? ? ? ? 外觀模式中外部與一個(gè)子系統(tǒng)的通信通過一個(gè)統(tǒng)一的外觀角色進(jìn)行,為子系統(tǒng)中的一組接口提供一個(gè)一致的入口。外觀模式定義了一個(gè)高層接口,這個(gè)接口使得子系統(tǒng)更加容易使用。外觀模式又稱為門面模式,它是一種對(duì)象結(jié)構(gòu)型模式。 myclass.h myclass.cpp main.cpp ? ?

    2024年01月19日
    瀏覽(24)
  • C++ 設(shè)計(jì)模式之外觀模式

    C++ 設(shè)計(jì)模式之外觀模式

    【聲明】本題目來源于卡碼網(wǎng)(題目頁面 (kamacoder.com)) 【提示:如果不想看文字介紹,可以直接跳轉(zhuǎn)到C++編碼部分】 【簡介】什么是外觀模式 ????????外觀模式 Facade Pattern , 也被稱為“??模式”,是?種 結(jié)構(gòu)型設(shè)計(jì)模式 ,外觀模式定義了?個(gè)?層接?,這個(gè)接?使得

    2024年01月17日
    瀏覽(24)
  • JavaScript 設(shè)計(jì)模式之外觀模式

    我們?yōu)樯兑褂猛庥^模式呢,其實(shí)我們?cè)谑褂酶鞣N js 庫的時(shí)候常常會(huì)看到很多的外觀者模式,也正是這些庫的大量使用,所以使得兼容性更廣泛,通過外觀者模式來封裝多個(gè)功能,簡化底層操作方法 在我們寫方法時(shí),通常會(huì)傳遞參數(shù)的形式來傳遞數(shù)據(jù) 但是我們更應(yīng)該這樣來

    2024年02月20日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包