外觀模式

一、模式簡介

定義:對內(nèi)整合多個(gè)子系統(tǒng),對外提供統(tǒng)一接口。外部應(yīng)用程序不用關(guān)心內(nèi)部子系統(tǒng)具體的細(xì)節(jié),大大降低了系統(tǒng)的復(fù)雜度和提高樂系統(tǒng)的可維護(hù)性。
場景:對分層結(jié)構(gòu)系統(tǒng)構(gòu)建時(shí),使用外觀模式定義子系統(tǒng)中每層的入口點(diǎn)可以簡化子系統(tǒng)之間的依賴關(guān)系。當(dāng)一個(gè)復(fù)雜系統(tǒng)的子系統(tǒng)很多時(shí),外觀模式可以為系統(tǒng)設(shè)計(jì)一個(gè)簡單的接口供外界訪問。當(dāng)客戶端與多個(gè)子系統(tǒng)之間存在很大的聯(lián)系時(shí),引入外觀模式可將它們分離,從而提高子系統(tǒng)的獨(dú)立性和可移植性。

  • 角色結(jié)構(gòu):
  • 外觀(Facade)角色:為多個(gè)子系統(tǒng)對外提供一個(gè)共同的接口。
  • 子系統(tǒng)(Sub System)角色:實(shí)現(xiàn)系統(tǒng)的部分功能,客戶可以通過外觀角色訪問它。
  • 客戶(Client)角色:通過一個(gè)外觀角色訪問各個(gè)子系統(tǒng)的功能。

二、模式實(shí)現(xiàn)

public interface Shape { -> 抽象子系統(tǒng)
    String shape();
}

public class Triangle implements Shape { -> 具體子系統(tǒng)
    @Override
    public String shape() {
        return "三角形";
    }
}

public class Rectangle implements Shape { -> 具體子系統(tǒng)
    @Override
    public String shape() {
        return "長方形";
    }
}

public class Facade { -> 外觀類
    private Shape triangle = new Triangle();
    private Shape rectangle = new Rectangle();

    public void triangle(){
        System.out.println(this.triangle.shape());
    }

    public void rectangle(){
        System.out.println(this.rectangle.shape());
    }
}

Facade facade = new Facade();
facade.triangle();
facade.rectangle();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容