日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

大话设计模式—外观模式

發(fā)布時(shí)間:2024/4/14 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话设计模式—外观模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

外觀模式(Facade Pattern)隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問(wèn)系統(tǒng)的接口。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口,來(lái)隱藏系統(tǒng)的復(fù)雜性。

這種模式涉及到一個(gè)單一的類,該類提供了客戶端請(qǐng)求的簡(jiǎn)化方法和對(duì)現(xiàn)有系統(tǒng)類方法的委托調(diào)用。主要用于解決降低訪問(wèn)復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡(jiǎn)化客戶端與之的接口。

大話設(shè)計(jì)模式中程杰老師給出的定義是:外觀模式:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。

外觀模式結(jié)構(gòu)圖:

我們將創(chuàng)建一個(gè) Shape 接口和實(shí)現(xiàn)了 Shape 接口的實(shí)體類。下一步是定義一個(gè)外觀類 ShapeFacade。ShapeFacade類使用實(shí)體類來(lái)代表用戶對(duì)這些類的調(diào)用。FacadePatternDemo,我們的演示類使用 ShapeFacade類來(lái)顯示結(jié)果。

類圖如下:

//形狀接口 public interface Shape {void draw(); }

Shape接口實(shí)現(xiàn)類:

public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Rectangle::draw()");} } public class Square implements Shape {@Overridepublic void draw() {System.out.println("Square::draw()");} } public class Circle implements Shape {@Overridepublic void draw() {System.out.println("Circle::draw()");} }

本實(shí)例的關(guān)鍵外觀類:

public class ShapeFacade {private Shape circle;private Shape rectangle;private Shape square;public ShapeFacade () {circle = new Circle();rectangle = new Rectangle();square = new Square();}public void drawCircle(){circle.draw();}public void drawRectangle(){rectangle.draw();}public void drawSquare(){square.draw();} } //測(cè)試方法 public class FacadePatternDemo {public static void main(String[] args) {ShapeFacade shapeFacade = new ShapeFacade ();shapeFacade.drawCircle();shapeFacade.drawRectangle();shapeFacade.drawSquare(); } }

運(yùn)行結(jié)果:

Circle:draw() Rectangle:draw() Square:draw()

使用場(chǎng)景:

1、在設(shè)計(jì)初期,應(yīng)該要有意識(shí)地將不同的兩個(gè)層分離,比如經(jīng)典的三層架構(gòu),就需要考慮在數(shù)據(jù)訪問(wèn)層和業(yè)務(wù)邏輯層、業(yè)務(wù)邏輯層和表示層的層與層之間建立外觀Facade,這樣可以為復(fù)雜的子系統(tǒng)提供一個(gè)簡(jiǎn)單的接口,降低耦合性;

2、在開發(fā)階段,子系統(tǒng)往往因?yàn)椴粩嗟闹貥?gòu)演化而變得越來(lái)越復(fù)雜,大多數(shù)的模式使用時(shí)也都會(huì)產(chǎn)生很多很小的類,這本是好事,但也給外部調(diào)用的用戶程序帶來(lái)了使用上的困難,增加外觀Facade可以提供一個(gè)簡(jiǎn)單的接口,減少它們之間的依賴;

3、在維護(hù)一個(gè)遺留的大系統(tǒng)時(shí),可能這個(gè)系統(tǒng)已經(jīng)非常難以維護(hù)和擴(kuò)展,但因?yàn)樗浅V匾墓δ?#xff0c;新的需求開發(fā)必須要依賴于它,此時(shí)使用外觀模式也是非常合適。我們可以為新系統(tǒng)開發(fā)一個(gè)外觀Facade類,來(lái)提供設(shè)計(jì)粗糙或高度復(fù)雜的遺留代碼的比較簡(jiǎn)潔的接口,讓新系統(tǒng)和Faade對(duì)象交互,Facade與遺留代碼交互所有復(fù)雜的工作。

就如同下圖描繪的:

優(yōu)點(diǎn):

1、減少系統(tǒng)相互依賴。
2、提高靈活性。
3、提高了安全性。

缺點(diǎn):不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。

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

總結(jié)

以上是生活随笔為你收集整理的大话设计模式—外观模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。