(轉載請註明來源:cnblogs coder-fang)框架
1。下面是一個簡單而又典型的工廠方法:spa
public static Employee CreateEmployee(string name) { if (name.StartWith("VIP")) { return new Employee() { Name = name.Replace("VIP", "") }; } return new Employee() { Name = name }; }
以上工廠代碼的邏輯是,若是名字中有VIP字樣 ,則將VIP去掉後再建立員工。.net
這裏的變化 點就是if語句,當建立的判斷邏輯隨着需求不斷變動時,會不斷的更改工廠方法,多是修改原有的,多是增長新的。設計
但經過C#語言技術,能夠把變化點隔離在不變化點的外部,以保證工廠的穩定性,經過C#的委託將邏輯注入進來。code
public static Employee CreateEmployee(string name,Func<string,bool> logic,Func<string,string> filter) { if (logic(name)) { return new Employee() { Name = filter(name) }; } return new Employee() { Name = name }; }
這裏只是委託在工廠模式的應用,充分發輝委託的力量,能夠在項目中發輝更大的做用。blog
引用 《.net 框架設計》string