Java設計模式之面板模式,java設計模式外觀

來源:互聯網
上載者:User

Java設計模式之面板模式,java設計模式外觀

 一、簡介

    面板模式(Facade),隱藏內部各子系統的細節與複雜性,向用戶端提供一個同一的調用介面,使得複雜系統易於被訪問和使用。

 

     面板模式,簡單點講就是把複雜的各個子系統組合成一個介面,提供給客戶使用。如,主要涉及3個重要角色:

1、子系統角色:實現子系統的邏輯功能。對於用戶端來說是未知的,子系統之間可以有互動。

2、門戶角色:核心角色。供用戶端調用,熟悉內部子系統功能。根據客戶需求對子系統進行功能對組合,抽象為一個介面。

3、客戶角色:通過調用Facade介面來完成要實現的功能

 

二、實戰

    假設有一棟別墅,裡面有很多門,比如臥室門、大廳門、廚房門,主人出遠門之前必須要把這些門關上,一般的做法就是一個一個關上,如果採用面板模式,可以提供一個總開關,統一對所有門進行開關控制。

首先定義一個關門操作的介面:

public interface Door {    public void closeDoor();}

  

臥室門、大廳門、廚房門分別建立一個類,實現Door介面:

public class BedroomDoor implements Door {    public void closeDoor() {        System.out.println("closing bedroom door.");    }}
public class KitchenDoor implements Door {    public void closeDoor() {        System.out.println("closing kitchen door.");    }}
public class HallDoor implements Door {    public void closeDoor() {        System.out.println("closing hall door.");    }}

 

門面類,對各種門的關門操作進行組合或者合并,只提供唯一的介面

public class DoorFacade {        Door bd = new BedroomDoor();    Door kd = new KitchenDoor();    Door hd = new HallDoor();        public void closeDoor() {        bd.closeDoor();        kd.closeDoor();        hd.closeDoor();    }}

  

用戶端,通過調用門面類的介面即可將所有的門關閉

public class Client {    public static void main(String[] args) {        DoorFacade facade = new DoorFacade();        facade.closeDoor();    }}

  

運行結果: 

 

 三、優點

 1、鬆散耦合:使得用戶端和子系統之間解耦,讓子系統內部的模組功能更容易擴充和維護;

 2、簡單易用:用戶端根本不需要知道子系統內部的實現,或者根本不需要知道子系統內部的構成,它只需要跟Facade類互動即可;

3、更好地劃分訪問層次:有些方法是對系統外的,有些方法是系統內部相互互動的使用的。子系統把那些暴露給外部的功能集中到門面中,這樣就可以實現用戶端的使用,很好的隱藏了子系                                              統內部的細節。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.