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

【Java 設(shè)計模式】結(jié)構(gòu)型之外觀模式

這篇具有很好參考價值的文章主要介紹了【Java 設(shè)計模式】結(jié)構(gòu)型之外觀模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


外觀模式(Facade Pattern)是一種結(jié)構(gòu)型設(shè)計模式, 它為復(fù)雜系統(tǒng)提供了一個簡化的接口,隱藏了系統(tǒng)的復(fù)雜性,使得客戶端更容易使用系統(tǒng)。外觀模式通過創(chuàng)建一個包裝類(外觀類),將系統(tǒng)的復(fù)雜性封裝起來,對客戶端提供一個簡單的接口。在本文中,我們將深入研究Java中外觀模式的定義、結(jié)構(gòu)、使用場景以及如何在實際開發(fā)中應(yīng)用。

1. 定義

外觀模式是一種結(jié)構(gòu)型設(shè)計模式,它為復(fù)雜系統(tǒng)提供了一個簡化的接口,隱藏了系統(tǒng)的復(fù)雜性,使得客戶端更容易使用系統(tǒng)。外觀模式通過創(chuàng)建一個包裝類(外觀類),將系統(tǒng)的復(fù)雜性封裝起來,對客戶端提供一個簡單的接口。

外觀模式通常包含三個主要角色:外觀類(Facade)、子系統(tǒng)類(Subsystem)和客戶端(Client)。

  • 外觀類(Facade): 提供了一個簡化的接口,封裝了對子系統(tǒng)的調(diào)用。
  • 子系統(tǒng)類(Subsystem): 實現(xiàn)了系統(tǒng)的功能,由外觀類調(diào)用。
  • 客戶端(Client): 調(diào)用外觀類來簡化系統(tǒng)的使用,無需直接與子系統(tǒng)交互。

2. 應(yīng)用場景

外觀模式通常在以下場景中使用:

  • 簡化復(fù)雜系統(tǒng)的使用:

    當一個系統(tǒng)變得復(fù)雜且難以理解時,可以使用外觀模式來提供一個簡單的接口,隱藏系統(tǒng)的復(fù)雜性,使得客戶端更容易使用系統(tǒng)。

  • 解耦客戶端和子系統(tǒng):

    當客戶端需要與多個子系統(tǒng)交互時,可以使用外觀模式來將這些交互封裝在一個簡單的接口中,減少客戶端與子系統(tǒng)的耦合。

  • 系統(tǒng)重構(gòu):

    當需要重構(gòu)一個復(fù)雜的系統(tǒng)時,可以使用外觀模式逐步提供簡化的接口,減少對系統(tǒng)其他部分的影響。

3. 代碼實現(xiàn)

下面通過一個簡單的例子來演示外觀模式的實現(xiàn)。假設(shè)有一個音響系統(tǒng),包含了多個子系統(tǒng),如播放器、音響和燈光。我們可以使用外觀模式來創(chuàng)建一個音響控制器,封裝對子系統(tǒng)的調(diào)用。

子系統(tǒng)類 - 播放器

package com.cheney.demo;

class Player {
    public void play() {
        System.out.println("開始播放音樂");
    }

    public void stop() {
        System.out.println("停止播放音樂");
    }
}

子系統(tǒng)類 - 音響

package com.cheney.demo;

class Stereo {
    public void turnOn() {
        System.out.println("打開音響");
    }

    public void turnOff() {
        System.out.println("關(guān)閉音響");
    }
}

子系統(tǒng)類 - 燈光

package com.cheney.demo;

class Lights {
    public void turnOn() {
        System.out.println("打開燈光");
    }

    public void turnOff() {
        System.out.println("關(guān)閉燈光");
    }
}

外觀類 - 音響控制器

package com.cheney.demo;

class SoundSystemFacade {
    private Player player;
    private Stereo stereo;
    private Lights lights;

    public SoundSystemFacade() {
        this.player = new Player();
        this.stereo = new Stereo();
        this.lights = new Lights();
    }

    public void playMusic() {
        player.play();
        stereo.turnOn();
        lights.turnOn();
    }

    public void stopMusic() {
        player.stop();
        stereo.turnOff();
        lights.turnOff();
    }
}

客戶端啟動器

package com.cheney.demo;

public class Client {
    public static void main(String[] args) {
        // 使用外觀模式簡化音響控制
        SoundSystemFacade soundSystem = new SoundSystemFacade();

        // 播放音樂
        soundSystem.playMusic();

        // 停止音樂
        soundSystem.stopMusic();
    }
}

在上述例子中,Player、StereoLights 分別表示播放器、音響和燈光,它們是音響系統(tǒng)的子系統(tǒng)。SoundSystemFacade 是外觀類,封裝了對這些子系統(tǒng)的調(diào)用,并提供了簡化的接口給客戶端。

在客戶端中,我們使用外觀模式簡化了音響系統(tǒng)的使用。通過調(diào)用外觀類的方法,客戶端無需直接與多個子系統(tǒng)交互,而是通過外觀類來管理對子系統(tǒng)的調(diào)用。

結(jié)語

外觀模式是一種簡化系統(tǒng)使用的設(shè)計模式,通過提供一個簡化的接口,隱藏了系統(tǒng)的復(fù)雜性。在實際開發(fā)中,外觀模式常被用于將復(fù)雜系統(tǒng)的功能進行封裝,使得客戶端更容易使用系統(tǒng)。通過合理使用外觀模式,可以提高系統(tǒng)的靈活性、可維護性,并降低客戶端與子系統(tǒng)之間的耦合。


【Java 設(shè)計模式】系列 《23 種設(shè)計模式》 與 《7 大設(shè)計原則》 總綱
??設(shè)計原則
?單一職責(zé)原則(SRP) 規(guī)定一個類應(yīng)該只有一個引起變化的原因
?開放/封閉原則(OCP) 表明軟件實體應(yīng)該是可以擴展的,但是不可修改的
?里氏替換原則(LSP) 強調(diào)派生類必須能夠替代其基類而不引起程序錯誤
?依賴倒置原則(DIP) 倡導(dǎo)高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象
?接口隔離原則(ISP) 提倡一個類不應(yīng)該被強迫依賴它不使用的接口
?合成/聚合復(fù)用原則(CARP) 建議盡量使用合成/聚合,盡量不要使用繼承
?迪米特法則(LoD) 規(guī)定一個對象應(yīng)該對其他對象有最少的了解

??創(chuàng)建型設(shè)計模式
?單例模式 保證一個類僅有一個實例,并提供一個訪問它的全局點
?工廠方法模式 定義一個用于創(chuàng)建對象的接口,但是由子類決定實例化哪一個類
?抽象工廠模式 提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類
?建造者模式 將一個復(fù)雜對象的構(gòu)建與其表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
?原型模式 通過復(fù)制現(xiàn)有的對象來創(chuàng)建新對象,而不是從頭開始創(chuàng)建

??結(jié)構(gòu)型設(shè)計模式
?適配器模式 將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口
?橋接模式 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化
?組合模式 將對象以樹形結(jié)構(gòu)組合以表示“部分-整體”的層次結(jié)構(gòu)
?裝飾器模式 動態(tài)地給一個對象添加一些額外的職責(zé)
?外觀模式 為子系統(tǒng)中的一組接口提供一個一致的界面
?代理模式 為其他對象提供一種代理以控制對這個對象的訪問
?享元模式 用共享的方式高效地支持大量小粒度對象

??行為型設(shè)計模式
?觀察者模式 定義對象間的一對多依賴,當一個對象改變狀態(tài),所有依賴者都會受到通知并自動更新
?策略模式 定義一系列算法,將它們封裝起來,并且使它們可以相互替換
?命令模式 將請求封裝成對象,使得可以用不同的請求對客戶進行參數(shù)化
?狀態(tài)模式 允許對象在其內(nèi)部狀態(tài)改變時改變它的行為
?責(zé)任鏈模式 為解除請求的發(fā)送者和接收者之間的耦合,而使多個對象都有機會處理這個請求
?訪問者模式 將算法與對象結(jié)構(gòu)分離,并且可以在不改變對象結(jié)構(gòu)的前提下定義新的操作
?中介者模式 用一個中介對象來封裝一系列的對象交互
?備忘錄模式 在不破壞封裝的情況下,捕獲對象的內(nèi)部狀態(tài),并在對象之外保存這個狀態(tài)
?迭代器模式 提供一種方法順序訪問一個聚合對象中的各個元素,而不暴露其內(nèi)部表示
?模版方法模式 定義一個操作中的算法的骨架,將一些步驟延遲到子類中
?解釋器模式 定義一個語言的文法,并且建立一個解釋器來解釋該語言中的句子

文章來源地址http://www.zghlxwxcb.cn/news/detail-811043.html

到了這里,關(guān)于【Java 設(shè)計模式】結(jié)構(gòu)型之外觀模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【Java 設(shè)計模式】結(jié)構(gòu)型之代理模式

    代理模式(Proxy Pattern)是一種結(jié)構(gòu)型設(shè)計模式, 它允許通過一個代理對象控制對其他對象的訪問 。代理模式在訪問對象時引入了一定程度的間接性,使得可以在訪問對象前后進行一些額外的操作。在本文中,我們將深入研究Java中代理模式的定義、結(jié)構(gòu)、使用場景以及如何在

    2024年01月21日
    瀏覽(23)
  • 【Java 設(shè)計模式】結(jié)構(gòu)型之橋接模式

    【Java 設(shè)計模式】結(jié)構(gòu)型之橋接模式

    橋接模式(Bridge Pattern)是一種結(jié)構(gòu)型設(shè)計模式, 它將抽象部分與實現(xiàn)部分分離,使它們可以獨立變化,從而降低它們之間的耦合 。橋接模式通過將抽象部分和實現(xiàn)部分分離,使得它們可以獨立地變化,同時在它們之間建立一個橋梁。在本文中,我們將介紹 Java 中橋接模式的

    2024年01月19日
    瀏覽(22)
  • Java學(xué)習(xí)——設(shè)計模式——結(jié)構(gòu)型模式2

    Java學(xué)習(xí)——設(shè)計模式——結(jié)構(gòu)型模式2

    結(jié)構(gòu)型模式主要涉及如何組合各種對象以便獲得更好、更靈活的結(jié)構(gòu)。雖然面向?qū)ο蟮睦^承機制提供了最基本的子類擴展父類的功能,但結(jié)構(gòu)型模式不僅僅簡單地使用繼承,而更多地通過組合與運行期的動態(tài)組合來實現(xiàn)更靈活的功能。 包括: 1、適配器 2、橋接 3、組合 4、裝

    2024年02月03日
    瀏覽(27)
  • 【十】設(shè)計模式~~~結(jié)構(gòu)型模式~~~享元模式(Java)

    【十】設(shè)計模式~~~結(jié)構(gòu)型模式~~~享元模式(Java)

    【學(xué)習(xí)難度:★★★★☆,使用頻率:★☆☆☆☆】 ????????面向?qū)ο蠹夹g(shù)可以很好地解決一些靈活性或可擴展性問題,但在很多情況下需要在系統(tǒng)中增加類和對象的個數(shù)。當對象數(shù)量太多時,將導(dǎo)致運行代價過高,帶來性能下降等問題。 享元模式正是為解決這一類問題

    2024年02月08日
    瀏覽(25)
  • Java設(shè)計模式-結(jié)構(gòu)型-適配器模式

    Java設(shè)計模式-結(jié)構(gòu)型-適配器模式

    ? 與電源適配器相似,在適配器模式中引入了一個被稱為適配器(Adapter)的包裝類,而它所包裝的對象稱為適配者(Adaptee),即被適配的類。適配器的實現(xiàn)就是把客戶類的請求轉(zhuǎn)化為對適配者的相應(yīng)接口的調(diào)用。也就是說:當客戶類調(diào)用適配器的方法時,在適配器類的內(nèi)部將調(diào)用

    2024年02月20日
    瀏覽(30)
  • Java23種設(shè)計模式-結(jié)構(gòu)型模式之組合模式

    組合模式 (Composite Pattern):將 對象組合成樹狀結(jié)構(gòu) 以表示“ 部分-整體 ”層次結(jié)構(gòu),同時保持對單個對象和組合對象的一致性操作,主要目的是簡化客戶端代碼,因為它可以統(tǒng)一處理單個對象和組合對象。 通常包含以下幾個角色: 角色1. 抽象組件 (Component):聲明了 組

    2024年04月26日
    瀏覽(30)
  • 【Java 設(shè)計模式】結(jié)構(gòu)型之享元模式

    享元模式(Flyweight Pattern)是一種結(jié)構(gòu)型設(shè)計模式,它旨在減少對象的數(shù)量以節(jié)省內(nèi)存和提高性能。享元模式通過共享大量相似對象的狀態(tài),使得這些對象可以共享,而不需要在每個對象中都存儲相同的數(shù)據(jù)。在本文中,我們將深入研究Java中享元模式的定義、結(jié)構(gòu)、使用場景

    2024年01月22日
    瀏覽(30)
  • 【Java 設(shè)計模式】結(jié)構(gòu)型之適配器模式

    【Java 設(shè)計模式】結(jié)構(gòu)型之適配器模式

    適配器模式(Adapter Pattern)是一種結(jié)構(gòu)型設(shè)計模式, 用于將一個類的接口轉(zhuǎn)換成客戶端期望的另一個接口 。這種模式使得原本由于接口不兼容而不能一起工作的類可以一起工作。在本文中,我們將介紹 Java 中適配器模式的定義、結(jié)構(gòu)、使用場景以及如何在實際開發(fā)中應(yīng)用。

    2024年01月19日
    瀏覽(25)
  • Java設(shè)計模式之結(jié)構(gòu)型-橋接模式(UML類圖+案例分析)

    Java設(shè)計模式之結(jié)構(gòu)型-橋接模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計 四、案例分析 4.1、支付方式 4.2、支付渠道? 五、總結(jié) 橋接模式(Bridge Pattern)是一種結(jié)構(gòu)型設(shè)計模式,其主要目的是“將抽象部分與實現(xiàn)部分分離,使它們都可以獨立地變化”。 橋接模式的核心思想是把抽象(abstraction)與實現(xiàn)

    2024年02月13日
    瀏覽(22)
  • Java設(shè)計模式之結(jié)構(gòu)型-組合模式(UML類圖+案例分析)

    Java設(shè)計模式之結(jié)構(gòu)型-組合模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計 四、案例分析 4.1、基本實現(xiàn) 4.2、菜單遍歷? 五、總結(jié)? 組合模式(Composite Pattern)又叫部分-整體模式,它通過將對象組合成樹形結(jié)構(gòu)來表示“整體-部分”的層次關(guān)系,允許用戶統(tǒng)一單個對象和組合對象的處理邏輯。 角色 描述

    2024年02月16日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包