欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設(shè)計模式詳解之門面模式(外觀模式)

 更新時間:2016年04月28日 11:50:20   作者:葉德華  
為子系統(tǒng)中的一組接口提供一個一致的界面, Facade 模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。本文給大家介紹Java設(shè)計模式詳解之門面模式(外觀模式),感興趣的朋友參考下吧

門面模式(Facade Pattern)也叫外觀模式,它隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供一個可以訪問系統(tǒng)的接口。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個接口,來隱藏系統(tǒng)的復(fù)雜性,為子系統(tǒng)中的一組接口提供了一個統(tǒng)一的高層訪問接口,這個接口使得子系統(tǒng)更容易被訪問或使用。這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現(xiàn)有系統(tǒng)類方法的委托調(diào)用。

簡而言之,就是把一堆復(fù)雜的流程封裝成一個接口供給用戶更簡單的使用,這個設(shè)計模式里有三個角色:

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

2)子系統(tǒng)角色(subsystem):實現(xiàn)了子系統(tǒng)的功能。對它而言, façade 角色就和客戶角色一樣是未知的,它沒有任何 façade 角色的信息和鏈接。

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

下面是一個簡單的實現(xiàn)實例:

// 定義了一個統(tǒng)一的入口
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();
}
}
// 直接利用之前定義的外觀類來繪制各種形狀,至于怎么獲得、怎么繪制無需關(guān)注
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)為復(fù)雜的模塊或子系統(tǒng)提供外界訪問的模塊。

(2)子系統(tǒng)相對獨(dú)立。

(3)在層次化結(jié)構(gòu)中,可以使用外觀模式定義系統(tǒng)中每一層的入口。

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

相關(guān)文章

  • IDEA如何修改配置文件的存放位置

    IDEA如何修改配置文件的存放位置

    這篇文章主要介紹了IDEA如何修改配置文件的存放位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java實現(xiàn)隊列queue數(shù)據(jù)結(jié)構(gòu)詳解

    java實現(xiàn)隊列queue數(shù)據(jù)結(jié)構(gòu)詳解

    大家好,本篇文章主要講的是java實現(xiàn)隊列queue數(shù)據(jù)結(jié)構(gòu)詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Java?Spring的兩種事務(wù)你知道嗎

    Java?Spring的兩種事務(wù)你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Java?Spring的兩種事務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java sm3加密算法的實現(xiàn)

    Java sm3加密算法的實現(xiàn)

    這篇文章主要介紹了Java sm3加密算法的實現(xiàn),幫助大家更好的利用Java進(jìn)行加密,感興趣的朋友可以了解下
    2020-10-10
  • java ReentrantLock詳解

    java ReentrantLock詳解

    這篇文章主要介紹了java ReentrantLock,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • HttpsURLConnection上傳文件流(實例講解)

    HttpsURLConnection上傳文件流(實例講解)

    下面小編就為大家?guī)硪黄狧ttpsURLConnection上傳文件流(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 微服務(wù)Spring Boot 整合 Redis 實現(xiàn)UV 數(shù)據(jù)統(tǒng)計的詳細(xì)過程

    微服務(wù)Spring Boot 整合 Redis 實現(xiàn)UV 數(shù)據(jù)統(tǒng)計的詳

    這篇文章主要介紹了微服務(wù)Spring Boot 整合 Redis 實現(xiàn) UV 數(shù)據(jù)統(tǒng)計,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • Java對象初始化過程代碼塊和構(gòu)造器的調(diào)用順序

    Java對象初始化過程代碼塊和構(gòu)造器的調(diào)用順序

    這篇文章主要介紹了Java對象初始化過程代碼塊和構(gòu)造器的調(diào)用順序,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • java ArrayList和Vector的區(qū)別詳解

    java ArrayList和Vector的區(qū)別詳解

    這篇文章主要介紹了java ArrayList和Vector的區(qū)別詳解的相關(guān)資料,并附簡單實例代碼,需要的朋友可以參考下
    2016-11-11
  • 解決IDEA?JDK9沒有module-info.java的問題

    解決IDEA?JDK9沒有module-info.java的問題

    這篇文章主要介紹了解決IDEA?JDK9沒有module-info.java的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論