來說說建立模式

2021-08-02 22:47:45 字數 1575 閱讀 5854

當我們要建立乙個複雜的系統,並且這種系統由著特定的複雜的步驟組合而成,我們要怎麼辦?就像老闆要你去採購一批電腦,電腦的配置各有所不同,品牌也不同,而電腦由不同的部件組成,主機板,記憶體,顯示器,機箱等組成,而你不肯能乙個乙個零件的去採購,然後在來組裝,這時候,我們就需要去找電腦城的老闆,去找不同品牌的老闆,讓老闆來給你組裝好成品的電腦,你只需要付錢就可以拿到不同的電腦,這就是乙個常見的建立者模式,老闆就充當了builder,從每個老闆那兒拿到不同的配置,不同品牌的電腦。好,我們來實現這個簡單的模式?

我們來實現電腦class - computer

/// ///  建立者模式

///

public class computer

public void show()

debug.log (" 電腦組裝結束");

} }

我們來實現乙個抽象的介面class-builder

/// /// 電腦的組裝著

///

public abstract class builder

我們在來實現兩個建立者 class - 

concreatebuilder1

/// /// 具體的建立者

///

public class concreatebuilder1 : builder

public override void buildmainboard()

public override computer getcomputer () }

/// /// 具體的建立者2

///

public class concreatebuilder2 : builder

public override void buildmainboard()

public override computer getcomputer ()

}

我們來實現乙個導演類,也就是古代打仗的時候的將軍,他負責指揮整個戰鬥的進行。

public class director

}

我們來測試

public class customer

}

(1)指揮者直接與客戶打交道,而客戶也絲毫不用關係產品的構造過程,指揮者把客戶的請求委託給每乙個建立者。

(2) 建造者模式主要用於「分步驟來構建乙個複雜的物件」,其中「分步驟」是乙個固定的組合過程,而複雜物件的各個部分是經常變化的(也就是說電腦的內部元件是經常變化的,這裡指的的變化如硬碟的大小變了,cpu由單核變雙核等

(3)產品不需要抽象類,由於建造模式的建立出來的最終產品可能差異很大,所以不大可能提煉出乙個抽象產品類

(4)在前面文章中介紹的抽象工廠模式解決了「系列產品」的需求變化,而建造者模式解決的是 「產品部分」 的需要變化

(5  

由於建造者隱藏了具體產品的組裝過程,所以要改變乙個產品的內部表示,只需要再實現乙個具體的建造者就可以了,從而能很好地應對產品組成元件的需求變化。

來說說(Singleton)單例模式

1.單例模式很常見,這多餘的就不說了,我們來實現乙個多執行緒下面的單例,在傳統的單例模式下面,我們可以完全保證在程式的整個執行週期類只存在乙個例項,但是在多執行緒的情況下,由於記憶體沒有共享等原因,很有肯能造成多個例項,我們通常的解決方案就是給物件加鎖,如下 using system public ...

來說說(Memorandum)備忘錄模式

根據他的名字來分析,我們就知道他是來儲存一些狀態的,當回滾的時候,就可以來進行返回,撤銷等操作,就像我們coding的時候,寫錯了,要直接control z來進行返回,當我們又不想破壞物件的原封裝性,又要來儲存,記錄一些狀態,怎麼辦?就像四五年前,我們做的萌三國之類的戰旗一樣,我們手動控制武將的移動...

來說說DNS解析

dns domain name system,網域名稱系統 網際網路上作為網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的ip數串。通過主機名,最終得到該主機名對應的ip位址的過程叫做網域名稱解析 或主機名解析 dns協議執行在udp協...