設計模式 建立型模式

2021-09-10 17:37:36 字數 2399 閱讀 1934

再設計模式的23個模式中一共分為大三類: 建立型模式,結構型模式,行為型模式。 

今天我們主要學習建立型模式

在它的核心結構中只包含乙個被稱為單例類的特殊類,該模式的目的是使得類的乙個物件成為系統中的唯一例項

如何保證乙個類只能有乙個例項並且這個例項容易被訪問?

1.確保乙個類只有乙個例項 ,通過私有建構函式來保證類外部不能對類進行例項化

2.在類定義中含有乙個該類的靜態私有物件

3.該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件

**如下:

/// /// 單例模式的實現

///

public class singleton

/// /// 定義公有方法提供乙個全域性訪問點,同時你也可以定義公有屬性來提供全域性訪問點

///

///

public static singleton getinstance()

//該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件

return uniqueinstance;}}

在建造者模式中,指揮者是直接與客戶端打交道的

建造者模式主要用於「分步驟來構建乙個複雜的物件

前面的抽象工廠模式解決了「系列產品的」需求而建造者模式解決的是「產品部分」的需求

}

/// /// 小王和小李難道會自願地去組裝嘛,誰不想休息的,這必須有乙個人叫他們去組裝才會去的

/// 這個人當然就是老闆了,也就是建造者模式中的指揮者

/// 指揮建立過程類

///

public class director

}/// /// 電腦類

///

public class computer

public void show()

console.writeline("電腦組裝好了");}}

/// /// 抽象建造者,這個場景下為 "組裝人" ,這裡也可以定義為介面

///

public abstract class builder

/// /// 具體建立者,具體的某個人為具體建立者,例如:裝機小王啊

///

public class concretebuilder1 : builder

public override void buildpartmainboard()

public override computer getcomputer()

}/// /// 具體建立者,具體的某個人為具體建立者,例如:裝機小李啊

/// 又裝另一台電腦了

當我們需要多個相同的類例項時,沒必要每次都使用new運算子去建立相同的類例項物件,此時我們的一般思路就是想---只建立乙個類例項物件,如果後面

需要更多的這樣的例項,可以通過對原來物件拷貝乙份來完成建立

如:細胞的**,西遊記中孫悟空變出很多子孫

class client

}/// /// 孫悟空原型

///

public abstract class monkeykingprototype

public monkeykingprototype(string id)

// 轉殖方法,即孫大聖說「變」

public abstract monkeykingprototype clone();

}/// /// 建立具體原型

///

public class concreteprototype : monkeykingprototype

/// /// 淺拷貝

設計模式 建立型模式 原型模式

1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

設計模式 建立型模式

建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...

設計模式 建立型模式

建立型模式 工廠方法 核心 客戶端呼叫具體的工廠,讓工廠去決定例項化哪個具體的類。核心 為工廠類建立對應的具體的類,表現為和對應的具體類的依賴關係。抽象工廠類 inte ce productfactory 具體a工廠 class concreteproductfactorya productfact...