国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .NET建造者模式講解

.NET建造者模式講解

2020-03-28 13:09Yangyi.He ASP.NET教程

這篇文章主要為大家詳細介紹了ASP.NET建造者模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

建造者模式的定義:

將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示,這樣的設計模式被稱為建造者模式

建造者模式結構圖:

.NET建造者模式講解

建造者模式角色:

1 builder:為創建一個產品對象的各個部件指定抽象接口。
2 ConcreteBuilder:實現Builder的接口以構造和裝配該產品的各個部件,定義并明確它所創建的表示,并提供一個檢索產品的接口。
3 Director:構造一個使用Builder接口的對象。
4 Product:表示被構造的復雜對象。ConcreteBuilder創建該產品的內部表示并定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的接口。

下面通過過現實生活中的建房子的例子,來詮釋建造者模式:

1.抽象出建造者接口,里面有待實現的創建房子種類的條件,創建后返回房間的數量,以及這件房子的描述信息。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// <summary>
/// 抽象建造者
/// </summary>
public interface IHouse
{
/// <summary>
/// 創建房子種類的條件
/// </summary>
/// <returns></returns>
bool GetBackyard();
 
/// <summary>
/// 創建的房間數
/// </summary>
/// <returns></returns>
long NoOfRooms();
 
/// <summary>
/// 描述
/// </summary>
/// <returns></returns>
string Description();
}

2.繼承IHouse接口,具體建造者,這里創建了一件房間,里面包括客廳,廚房,洗手間,臥室,共四件房間這樣一座房子。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class CRoom
{
public string RoomName { get; set; }
}
 
/// <summary>
/// 具體建造者
/// </summary>
public class CSFH:IHouse
{
private bool mblnBackyard;
private Hashtable Rooms;
 
public CSFH() {
CRoom room = new CRoom();
room.RoomName = "一樓客廳";
Rooms = new Hashtable();
Rooms.Add("room1", room);
 
room = new CRoom();
room.RoomName = "一樓廚房";
Rooms.Add("room2", room);
 
room = new CRoom();
room.RoomName = "一樓洗手間";
Rooms.Add("room3", room);
 
room = new CRoom();
room.RoomName = "一樓臥室";
Rooms.Add("room4",room);
 
mblnBackyard = true;
}
 
public bool GetBackyard()
{
return mblnBackyard;
}
 
public long NoOfRooms()
{
return Rooms.Count;
}
 
public string Description()
{
IDictionaryEnumerator myEnumerator = Rooms.GetEnumerator();
string strDescription = "這個房子共 " + Rooms.Count + " 間 \n";
while (myEnumerator.MoveNext())
{
strDescription = strDescription + "\n" + myEnumerator.Key + "\t" + ((CRoom)myEnumerator.Value).RoomName;
}
return strDescription;
}
}

3.繼承IHouse接口,具體建造者,這里創建了一件房子,里面只包括臥室,客廳,廚房共三件房間這樣一座房子。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/// <summary>
/// 其他具體建造者
/// </summary>
public class CApt:IHouse
{
private bool mblnBackyard;
private Hashtable Rooms;
 
public CApt()
{
Rooms = new Hashtable();
CRoom room = new CRoom();
room.RoomName = "臥室";
Rooms.Add("room1", room);
 
room = new CRoom();
room.RoomName = "客廳";
Rooms.Add("room2", room);
 
room = new CRoom();
room.RoomName = "廚房";
Rooms.Add("room3", room);
 
mblnBackyard = false;
}
 
public bool GetBackyard()
{
return mblnBackyard;
}
 
public long NoOfRooms(){
return Rooms.Count;
}
 
public string Description(){
IDictionaryEnumerator myEnumerator = Rooms.GetEnumerator();
string strDescription = "這個房子一共 " + Rooms.Count + " 間 \n";
while (myEnumerator.MoveNext())
{
 strDescription = strDescription + "\n" + myEnumerator.Key + "\t" + ((CRoom)myEnumerator.Value).RoomName;
}
return strDescription;
}
}

4.創建指導者,指導要求哪一個建造者去建造什么樣子的房間。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// 指導者
/// </summary>
public class CDirector
{
public IHouse BuildHouse(bool blnBackyard)
{
if (blnBackyard)
{
return new CSFH();
}
else
{
return new CApt();
}
}
}

5.創建:

?
1
2
3
4
5
6
7
8
9
static void Main(string[] args)
{
CDirector objDirector = new CDirector();//實例化指導者
IHouse objHouse;
string Input = Console.ReadLine();//輸入條件指導哪位創建者創建房間
objHouse = objDirector.BuildHouse(bool.Parse(Input));
Console.WriteLine(objHouse.Description());
Console.ReadLine();
}

建造者模式主要用于“分步驟構建一個復雜的對象”,在這其中“分步驟”是一個穩定的算法,而復雜對象的各個部分則經常變化

產品不需要抽象類,特別是由于創建對象的算法復雜而導致使用此模式的情況下或者此模式應用于產品的生成過程,其最終結果可能差異很大,不大可能提煉出一個抽象產品類。

前面的抽象工廠模式解決“系列對象”的需求變化,Builder 模式解決“對象部分”的需求變化。

建造者模式的使用使得產品的內部表象可以獨立的變化。使用建造者模式可以使客戶端不必知道產品內部組成的細節

每一個Builder都相對獨立,而與其它的Builder無關。

建造者模式適用于需要生成的產品對象的屬性相互依賴,建造者模式可以強迫生成順序。需要生成的產品對象有復雜的內部結構。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久99久 | 亚洲免费视频网 | 日韩精品视频在线观看一区二区 | 青青草久 | 91精品国产综合久久久久 | 国产精品久久久久久久一区探花 | 一区二区三区国产 | 久久久精品国产 | 日韩1区2区| 三级在线观看网站 | 欧美日韩在线看 | 99在线视频播放 | 欧美日韩亚洲二区 | 国产成人精品一区二区三区视频 | 福利视频网址导航 | 亚洲精品一区二区三区蜜桃久 | 久久一日本道色综合久久 | 日韩欧美成人一区二区三区 | 日韩影音| 综合色吧 | 欧美精三区欧美精三区 | 国产高清精品在线 | 视频一区二区三区中文字幕 | 成人av在线网 | 一区二区三区高清不卡 | 91亚洲精品 | 日本中文字幕视频 | www伊人| 自拍偷拍欧美 | 欧美国产日韩一区 | 日韩成人在线播放 | 亚洲视频精品 | 中文字幕天堂在线 | 欧美一区二区免费 | 免费看少妇高潮一级毛片特黄 | 亚洲人人 | 欧美激情国产日韩精品一区18 | 一级片一级片 | av77| 欧美日韩电影一区二区 | 中文字幕日韩欧美一区二区三区 |