Java設計模式詳解之門面模式(面板模式)_java

來源:互聯網
上載者:User

門面模式(Facade Pattern)也叫面板模式,它隱藏系統的複雜性,並向用戶端提供一個可以訪問系統的介面。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個介面,來隱藏系統的複雜性,為子系統中的一組介面提供了一個統一的高層提供者,這個介面使得子系統更容易被訪問或使用。這種模式涉及到一個單一的類,該類提供了用戶端請求的簡化方法和對現有系統類別方法的委託調用。

簡而言之,就是把一堆複雜的流程封裝成一個介面供給使用者更簡單的使用,這個設計模式裡有三個角色:

1)門面角色( facade ):這是門面模式的核心。它被客戶角色調用,因此它熟悉子系統的功能。它內部根據客戶角色已有的需求預定了幾種功能組合。

2)子系統角色(subsystem):實現了子系統的功能。對它而言, façade 角色就和客戶角色一樣是未知的,它沒有任何 façade 角色的資訊和連結。

3)客戶角色:調用 façade 角色來完成要得到的功能。

下面是一個簡單的實現執行個體:

// 定義了一個統一的入口public class ShapeMaker {private Shape circle;private Shape rectangle;private Shape square;public ShapeMaker() {circle = new Circle();rectangle = new Rectangle();square = new Square();}public void drawCircle() {circle.draw();}public void drawRectangle() {rectangle.draw();}public void drawSquare() {square.draw();}}// 直接利用之前定義的外觀類來繪製各種形狀,至於怎麼獲得、怎麼繪製無需關注public class FacadePatternDemo {public static void main(String[] args) {ShapeMaker shapeMaker = new ShapeMaker();shapeMaker.drawCircle();shapeMaker.drawRectangle();shapeMaker.drawSquare();}}

圖1:UML圖示

class DrawerOne {public void open() {System.out.println("第一個抽屜被開啟了");getKey();}public void getKey() {System.out.println("得到第二個抽屜的鑰匙");}}class DrawerTwo {public void open() {System.out.println("第二個抽屜被開啟了");getFile();}public void getFile() {System.out.println("得到這個重要檔案");}}class DrawerFacade {DrawerOne darwerOne = new DrawerOne();DrawerTwo darwerTwo = new DrawerTwo();public void open() {darwerOne.open();darwerTwo.open();}}public class DrawerClient {public static void main(String[] args) {DrawerFacade drawer = new DrawerFacade();drawer.open();}}

門面模式使用情境:

(1)為複雜的模組或子系統提供外界訪問的模組。

(2)子系統相對獨立。

(3)在層次化結構中,可以使用面板模式定義系統中每一層的入口。

以上所述是小編給大家介紹的Java設計模式詳解之門面模式(面板模式),希望對大家有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.