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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

大话设计模式—外观模式

發布時間:2024/4/14 asp.net 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话设计模式—外观模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

外觀模式(Facade Pattern)隱藏系統的復雜性,并向客戶端提供了一個客戶端可以訪問系統的接口。這種類型的設計模式屬于結構型模式,它向現有的系統添加一個接口,來隱藏系統的復雜性。

這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委托調用。主要用于解決降低訪問復雜系統的內部子系統時的復雜度,簡化客戶端與之的接口。

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

外觀模式結構圖:

我們將創建一個 Shape 接口和實現了 Shape 接口的實體類。下一步是定義一個外觀類 ShapeFacade。ShapeFacade類使用實體類來代表用戶對這些類的調用。FacadePatternDemo,我們的演示類使用 ShapeFacade類來顯示結果。

類圖如下:

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

Shape接口實現類:

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()");} }

本實例的關鍵外觀類:

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();} } //測試方法 public class FacadePatternDemo {public static void main(String[] args) {ShapeFacade shapeFacade = new ShapeFacade ();shapeFacade.drawCircle();shapeFacade.drawRectangle();shapeFacade.drawSquare(); } }

運行結果:

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

使用場景:

1、在設計初期,應該要有意識地將不同的兩個層分離,比如經典的三層架構,就需要考慮在數據訪問層和業務邏輯層、業務邏輯層和表示層的層與層之間建立外觀Facade,這樣可以為復雜的子系統提供一個簡單的接口,降低耦合性;

2、在開發階段,子系統往往因為不斷的重構演化而變得越來越復雜,大多數的模式使用時也都會產生很多很小的類,這本是好事,但也給外部調用的用戶程序帶來了使用上的困難,增加外觀Facade可以提供一個簡單的接口,減少它們之間的依賴;

3、在維護一個遺留的大系統時,可能這個系統已經非常難以維護和擴展,但因為它包含非常重要的功能,新的需求開發必須要依賴于它,此時使用外觀模式也是非常合適。我們可以為新系統開發一個外觀Facade類,來提供設計粗糙或高度復雜的遺留代碼的比較簡潔的接口,讓新系統和Faade對象交互,Facade與遺留代碼交互所有復雜的工作。

就如同下圖描繪的:

優點:

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

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

注意事項:在層次化結構中,可以使用外觀模式定義系統中每一層的入口。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。