設計模式(2) 建立型模式

2021-05-28 06:08:20 字數 3768 閱讀 9378

對設計模式學了有一段的時間了,設計模式是軟體工程的基石,他是人們反覆使用的,程式設計師們幾十年的經驗總結,以「開放—封閉」、「單一職責」、「依賴倒轉」、「黎克特制代換」、「合成聚合復用」、「迪公尺特法則」、「介面隔離」為基本原則。

本篇部落格我對建立型模式進行總結,其中包括:單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。

1.      單例模式

這是最簡單的乙個模式,保證乙個類僅有乙個例項,並提供乙個訪問他的全域性訪問點。可以嚴格的控制客戶怎樣訪問它以及何時訪問它。簡單地說就是對唯一例項的受控訪問。它的秘密**是建立私有的建構函式。(就像中國只能有乙個,任何人不可分割)

uml圖:

**:

namespace 單例模式

console.read();}}

class singleto

public static singleto getinstance()

return instance;}}

}

2 . 工廠方法模式

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。(就像服裝生產工廠,有專門生產襪子的工廠,有專門生產內衣的工廠)

uml圖:

**:

namespace 工廠模式

}inte***ce ifactory //工廠介面

class addfactory : ifactory //加法工廠

}class subfactory : ifactory //減法工廠

}class mulfactory : ifactory //乘法工廠

}class divfactory : ifactory //除法工廠

}public class operation //抽象運算類

set

}public double numberb

set

}public virtual double getresult()

}class operationadd : operation //加法類

}class operationsub : operation //減法類

}class operationmul : operation //乘法類

}class operationdiv : operation //除法類}}

3 . 抽象工廠模式

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類,建立不同的產品物件,客戶端應使用不同的具體工廠(就像adidas工廠專門生產這個牌子的鞋、衣服、等裝備,nike專門生產這個牌子的鞋、衣服、等裝備)

uml圖:

**:

namespace 抽象工廠模式

}class department

set}

private string _deptname;

public string deptname

set}

}inte***ce idepartment

class sqlserverdepartment : idepartment

public department getdepartment(int id)

}class accessdepartment : idepartment

public department getdepartment(int id)

}inte***ce ifactory2

class sqlserve***ctory2 : ifactory2

public idepartment createdepartment()

}class accessfactory2 : ifactory2

public idepartment createdepartment()

}inte***ce iuser //使用者介面

class sqlserveruser1 : iuser

public user getuser(int id)

}class accessuser1 : iuser

public user getuser(int id)}}

4. 建造者模式

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。(就像蓋乙個大樓,房地產商要先找挖地基的工人幹活,再找蓋樓的人幹活,再找做外圍包裝的工人幹活)

uml圖:

**:

namespace 建造者模式

}class product //產品類,由多個部件構成

public void show()}}

abstract class builder2 //抽象建造者,確定建造者的組成部分

class concreatebuilder1 : builder2 //具體建造者concreatebuilder1——工人

public override void buildpartb()

public override product getresult()

}class concreatebuilder2 : builder2 //具體建造者concreatebuilder2——工人

public override void buildpartb()

public override product getresult()

}class director2 //指揮者類——設計師}}

5. 原型模式

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。其實就是從乙個物件再建立另乙個可定製的物件,而且不需要知道任何建立的細節。秘密**:轉殖自身(不知道大家見過做月餅的模子沒有,就像它,用這個模子可以做出乙個一樣的東西,做出來之後還可以稍微修改一下成為你想要的形狀)

uml圖:

**:

簡歷的淺複製

namespace 原型模式

}class workexperience //工作經歷

set

}private string company;

public string company

set }}

class resume2 : icloneable //簡歷

public void setpersonalinfo(string ***, string age)

public void setworkexpersonalinfo(string workdate, string company)

public void display()

",name,***,age );

console.writeline("工作經歷:",work.workdate,work.company );

}/* memberwiseclone 方法建立乙個淺表副本,具體來說就是建立乙個新的物件

* 然後將當前物件的非靜態字段複製到該新物件,如果欄位是子型別

* 則對該字段進行逐位的複製,如果是引用則複製引用但不複製

* 引用的物件;因此,原始物件及其副本引用同一物件

*/ public object clone()}}

設計模式2 工廠模式(建立型模式)

今天折騰第二種設計模式 工廠模式。和單例模式一樣,工廠模式也是一種建立型模式。通俗一點的話來講,工廠模式的出現是為了讓開發人員使用統一的介面函式 工廠類 實現相關類的例項化,這些待例項化的類有彼此類似的結構或者功能,這樣開發人員就不用挨個去執行 new 操作,將具體的例項化 new 操作交給封裝好的...

設計模式初探2 建立型模式

共有6種建立型模式 1.簡單工廠 single factory 模式 乙個簡單工廠模式根據所提供的資料返回某個類的乙個例項,此類是多個可能的類中的乙個。通常他返回的類都具有共同的父類和共同的方法,但是每個類執行的任務各不相同,並且針對不同型別的資料進行了優化。2.工廠方法 factory metho...

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

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