文章出處
文章列表
在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……
建造者模式:將一個復雜對象的構建與它的表示分離,使得同樣的建造過程可以創建不同的表示
1.建造者模式應用
一家服裝廠,經理老張,員工兩名(一個師傅老王,一個徒弟小海),客戶跟老張聯系,要做兩件衣服,老張指派老王和小海各做一件
定義建造者抽象類和具體建造者,他們是具體干活的(對象的構建)
/// <summary> /// 員工抽象類(建造者抽象類) /// </summary> public abstract class Staff { protected string _name; public Staff(string name) { this._name = name; } /// <summary> /// 具體業務 /// </summary> public abstract void DoSomething(); } /// <summary> /// 一般員工(具體建造者) /// </summary> public class GeneralStaff : Staff { public GeneralStaff(string name) : base(name) { } public override void DoSomething() { Console.WriteLine("{0}【一般員工】做的衣服,做工粗糙", this._name); } } /// <summary> /// 資深員工(具體建造者) /// </summary> public class SeniorStaff : Staff { public SeniorStaff(string name) : base(name) { } public override void DoSomething() { Console.WriteLine("{0}【資深員工】做的衣服,做工精細", this._name); } }
定義指揮者,負責與外部對接的(表示的分離)
/// <summary> /// 指揮者 /// </summary> public class Director { protected string _name; public Director(string name) { this._name = name; } /// <summary> /// 指派員工干活 /// </summary> public void Assign(Staff staff) { staff.DoSomething(); } }
開啟場景模擬
static void Main(string[] args) { //一家服裝廠,經理老張,員工兩名(一個師傅老王,一個徒弟小海) Director laozhang = new Director("老張"); SeniorStaff laowang = new SeniorStaff("老王"); GeneralStaff xiaohai = new GeneralStaff("小海"); //客戶跟老張聯系,要做兩件衣服,老張指派老王和小海各做一件 laozhang.Assign(laowang); laozhang.Assign(xiaohai); }
文章列表
全站熱搜