激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java設(shè)計(jì)模式詳解之門面模式(外觀模式)

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

2020-04-21 11:42葉德華 JAVA教程

為子系統(tǒng)中的一組接口提供一個(gè)一致的界面, Facade 模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。本文給大家介紹Java設(shè)計(jì)模式詳解之門面模式(外觀模式),感興趣的朋友參考下吧

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

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

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

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

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

下面是一個(gè)簡(jiǎn)單的實(shí)現(xiàn)實(shí)例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 定義了一個(gè)統(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();
}
}

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

圖1:UML圖示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class DrawerOne {
public void open() {
System.out.println("第一個(gè)抽屜被打開了");
getKey();
}
public void getKey() {
System.out.println("得到第二個(gè)抽屜的鑰匙");
}
}
class DrawerTwo {
public void open() {
System.out.println("第二個(gè)抽屜被打開了");
getFile();
}
public void getFile() {
System.out.println("得到這個(gè)重要文件");
}
}
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();
}
}

門面模式使用場(chǎng)景:

(1)為復(fù)雜的模塊或子系統(tǒng)提供外界訪問的模塊。

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品999在线观看 | 国产在线精品区 | 久久中文免费 | 美国一级黄色毛片 | 国产亚洲精久久久久久蜜臀 | 亚洲最大的成人网 | 91精品国产综合久久久欧美 | 宅男噜噜噜66国产在线观看 | 国产福利不卡一区二区三区 | 欧美视频一二三区 | 新久草在线视频 | 久久精品操 | 55夜色66夜色国产精品视频 | 一区二区久久电影 | 亚洲一二区精品 | 国产精品欧美久久久久一区二区 | 色就色 综合偷拍区91网 | 97色在线观看免费视频 | 久色乳综合思思在线视频 | 色婷婷av一区二区三区久久 | 国产免费高清在线视频 | 免费黄色在线 | 吾色视频 | 国产小视频在线 | 久久成人亚洲 | 91视频完整版 | 久久久久久久久久亚洲 | 久久男人视频 | 天天操天天干天天操 | 亚洲最大中文字幕 | 欧美一级高清免费 | 男女无遮挡羞羞视频 | 免费网站看毛片 | 污视频在线看 | 国产va在线观看 | 久久精品视频在线免费观看 | 又黄又爽免费无遮挡在线观看 | 毛片三区| 爽爽淫人综合网网站 | 亚洲成人高清在线观看 | 午夜久久视频 |