參照:
《----------工廠模式----------》
使用者使用某乙個類去新建乙個例項的時候,並不用關心具體的實現過程,只呼叫例項的方法就好。
如上圖所示,1. 有乙個鳥類,定義了兩個方法:羽毛和翅膀;2. 繼承該鳥類實現了三個新的具體鳥類,分別有自己的特點;3. 設計乙個工廠類,可以根據傳入的名字引數,具體例項化不同的鳥類; 4. 客戶端在呼叫鳥類的時候,只需要使用名字呼叫工廠類方法就可以實現,不管具體鳥類的實現過程;
/// /// 所有鳥類的抽象基類這樣的設計過程非常的好,但是也不滿足開閉原則,即在新增乙個具體鳥類的時候,需要在工廠類中新增乙個case。///
public abstract class bird
public virtual void wing()
}//老鷹類--也是鳥類
class eagle:bird
public override void wing()
}//鴕鳥類
public class ostrich : bird
public override void wing()
}//麻雀類
class sparrow:bird
public override void wing()
}//工廠類,用於生成鳥
public class factory
return instance;}}
//客戶端呼叫
class program
}
有沒有更好的設計呢?
二 設計模式 工廠模式
一.傳統時以pizza類舉例,乙個抽象類pizza,由幾個pizza實現類實現,主餐廳看看客戶點什麼便生產,但是如果需要增加新的pizza品種,則要增加乙個新的實現類,然後主餐廳裡增加對邏輯的判斷,顯然,違背了開放關閉原則。所以 工廠模式為解決某些需要生產大量一批類的問題 二.簡單工廠模式 定義了乙...
設計模式(二)工廠模式
與 模式不同,生產模式隱藏過程,只關注結果 簡單工廠,工廠方法,抽象工廠 一,簡單工廠模式 public inte ce car public class aodi implements car public class baoma implements car public class facto...
設計模式(二) 工廠模式
前言 我在面試的時候,有時候會問到候選人有沒有熟悉的設計模式,一般大部分候選人會選擇說熟悉單例和工廠 也有部分人會說熟悉觀察者 如果我進一步問候選人是如何應用工廠模式的,10個候選人有10個會舉連線sqlserver,oracle,mysql等不同資料庫時會用工廠模式產生不同的連線的例子。omg,我...