国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 14:24:43
字體:
來源:轉載
供稿:網友

門面模式(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設計模式詳解之門面模式(外觀模式),希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰县| 区。| 马边| 长治市| 娱乐| 抚顺县| 潮州市| 福鼎市| 金昌市| 合水县| 广昌县| 黑水县| 土默特右旗| 伊吾县| 彰武县| 镇沅| 吉木萨尔县| 潜江市| 张家界市| 龙岩市| 任丘市| 二手房| 宁明县| 陈巴尔虎旗| 肥东县| 彭阳县| 东乡族自治县| 克拉玛依市| 云安县| 柏乡县| 潜江市| 汝南县| 红安县| 平度市| 竹山县| 纳雍县| 壶关县| 沧州市| 陈巴尔虎旗| 龙里县| 绥滨县|