這兩天事太多了,沒來的及更新。今天早點更新。
今天扯建造者模式。大家都知道乙個物件的生成是有過程的。表面上我們看的是new,其實編譯器是有一定細節指令**的。比如我們建房子,需要挖地基,砌牆,上頂等。這些操作步驟不需要我們動手,交給泥瓦工就行了。我們提供的只是,這個宅基地地方,材料等而已。
2.引用型別在傳遞過程中傳的是引用,其託管堆中的資料可以程序共享。
3.設計模式之類的東西就是讓思路與實現分離。
原來c語言面向過程的結構化程式一層一層的剝離封裝變成物件導向的程式。
直接用例子說明,繼續上別人的**(備註:研究學習用,所有權歸原作者),我來解釋:
//這個類是對應設計師,只設計規劃,不去做具體的實施過程。
abstract class personbuilder
//建造房子需要哪些步驟,比如挖地基,砌牆,上頂等這些只是一般的思路,先設計好,不進行具體操作。
public abstract void buildhead();
public abstract void buildbody();
public abstract void buildarmleft();
public abstract void buildarmright();
public abstract void buildlegleft();
public abstract void buildlegright();
}//這是設計的具體實現,招的那批擅長建造別墅的泥瓦工
class personfatbuilder : personbuilder
//具體實施設計師的步驟
public override void buildhead()
public override void buildbody()
public override void buildarmleft()
public override void buildarmright()
public override void buildlegleft()
public override void buildlegright()
}//包工頭負責使用那些泥瓦工
class persondirector
//包工頭不幹活,只讓泥瓦工具體實施
public void createperson()
}//雇主買需要的材料
pen p = new pen(color.yellow);
//雇主決定建造什麼型別的房子
persondirector pdthin = new persondirector("thin",picturebox1.creategraphics(),p);
pdthin.createperson();
persondirector pdfat = new persondirector("fat", picturebox2.creategraphics(), p);
pdfat.createperson();
繼續總結:設計模式這些東西都是理論上的,說的再多,具體專案中用的少,照樣記不住,想不到。
設計模式對應一類問題的解決方案,可以認為是前人留下的經驗。
還想再說一遍:c#中的引用型別就相當於指標變數。ref 引用型別 相當於指標的指標變數。
不扯了,學程式設計沒有捷徑,寫上10w行**,無師自通,量的改變才能造成質的改變。
設計模式之建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟 設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設 計模式 和...
設計模式之建造者模式
建造者模式也叫生成器模式,是一種物件建立型模式,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承或過載的方式,動態的建立具有復合屬性的物件。應用場景 物件的建立 builder 模式是為物件的建立而設計的模式 建立的是乙個復合物件 被建立的物件為乙個具有復合屬性的復合物件 關...
設計模式之建造者模式
在做服務介面的時候,往往在業務處理之前需要做業務校驗,格式校驗等業務前處理。這些介面有個相同的特徵,就是必須經過這些處理步驟之後才能做核心的業務處理,拓展的服務介面也必須經過這些處理。基於這個特徵,我們就來分析一下設計模式中,建造者模式。我們先建乙個基礎的服務類 public abstract cl...