三十二 設計模式總結 結構型模式

2022-02-25 19:09:10 字數 2950 閱讀 4209

設計模式總結

二.結構型模式

1,介面卡模式

將乙個第三方類方法,轉換到另乙個類中的呼叫的方法。

優點:使原本介面不相容而不能工作的類一起工作,復用方法

缺點:改動源類會帶來麻煩

總結:多用於後期維護,修改時,復用類似類,方法或控制項時使用。

class translator//介面卡

private f f=new f();

pulic override void add()      

2,橋接模式

將抽象部分與它的實現部分分離,使他們都可以獨立地變化

優點:可以對不同抽象介面和實現部分進行組合,並分別擴充。

對抽象的實現部分的修改對客戶端不產生影響

總結:複雜了橋接提取部分,可以隨意組合。對客戶端不影響。

多用於在客戶端呼叫實現部分有不同組合時使用。

class abstraction//提取

protected implementor implementor;

public void setimplementor(implementor implementor)

public virtual void operation()

3,組合模式

組合成樹形結構表示物件的部分-整體層次結構。

優點:是使用者對單個物件和組合物件的使用一致,忽略單個和整體區別

缺點:使用時必須符合部分-整體的情況。分清葉和節點的區別。

總結:組合模式將複雜邏輯放置於內部,減少客戶端使用壓力。

特點較明顯,樹形結構,組合明顯的系統中使用。

使用時比較葉和節點,很好理解。

class leaf:component//在組合中表示葉節點物件,葉節點沒有子節點

public leaf(string name) : base(name)

public override void add(component c)

public override void remove(component c)

public override void display(int depth)

class composite:component//定義有枝節點行為,用來儲存子部件

private listchildren = new list();

public composite(string name) : base(name)

public override void add(component c)

public override void remove(component c)

public override void display(int depth)

console.writeline(new string('-',depth) + name);

foreach (component co in children)

4,裝飾模式

為已有功能動態的新增更多功能。

優點:動態新增功能。例項化的所有繼承與裝飾類,都可以相互新增功能。

總結:首先所有的實現類都是繼承於同乙個裝飾類。

這些實現類的實現方法需要相互新增。滿足這兩條件時使用。

abstract class decorator:component//裝飾類

protected component component;

public void setcomponent(componentcomponent)        

public override voidoperation()}

5,外觀模式

封裝子系統所提供的一組介面,方便程式呼叫。

缺點:封裝一組複雜介面時,被封死,不易改動,不了解內部機制

總結:外觀模式高內聚,低耦合。但封裝內部一組介面時,不易改動。內部方法邏

輯穩定時使用

class home//外觀模式

key key; door door;

public home()

public void inhome()

public void outhome()

6,享元模式

運用共享技術有效地支援大量細粒度的物件

優點:減少大量物件的使用,將物件的大多數狀態放到外部

缺點:除去外部狀態,物件要穩定一直,因為是共享的

總結:在大量使用類似物件時使用。比如圍棋中的棋子,可以將座標狀態放到外部。

usingsystem.collections;

classwebsitefactory//**工廠

private hashtable flyweights = new hashtable();

public website getwebsitecategory(stringkey) //獲得**分類

if (!flyweights.containskey(key))

return ((website)flyweights[key]);

public int getwebsitecount()//獲取**總數

7,**模式

隱藏真實模組。為其他物件提供一種**以控制對這個物件的訪問

優點:隱藏真實模組

總結:類似於介面卡,不過只是類名不同,方法名相同

class proxy : subject//**類

realsubject realsubject;

public override voidrequest()

if (realsubject == null)

realsubject.request();

設計模式 結構型模式總結

結構型模式描述了如何把類和物件組合起來以形成更大的結構。我是這麼理解的 程式大體框架已基本形成了,只是對其 和結構進行了優化。提高了 的復用性,降低了系統內部的耦合性。該型別模式主要包括 介面卡模式 橋接模式 組合模式 裝飾模式 外觀模式 享元模式 模式。1.介面卡模式 更換介面,使其成為適應使用者...

設計模式 結構型模式

介面卡模式 adapter pattern 橋接模式 bridge pattern 過濾器模式 filter criteria pattern 組合模式 composite pattern 裝飾器模式 decorator pattern 外觀模式 facade pattern 享元模式 flywei...

設計模式 結構型模式

proxy 模式 中介 介面卡 adapter 模式 轉換器 1.定義 將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。2.優點 復用了現存的類 將目標類和適配者類解耦,解決了目標類和適配者類介面不一致的問題。3.缺點 更換介面卡的實現過程比較複雜...