三、抽象工廠模式函數
引言:spa
咱們知道汽車須要不少部件才能組裝成一輛成品的車,那麼咱們須要汽車廠生產不少東西,如:馬達、車軸、輪胎等,這些東西組裝起來後成爲了一輛車。.net
這些東西就是產品族,圖解:(出之http://www.cnblogs.com/zhenyulu/articles/36885.aspx)設計
這張圖很明確的詮釋了,工廠和產品族的關係。code
理解:對象
引出產品族的概念是爲了說明,工廠不可能只生產一個商品,它會生產不少不少商品。blog
也就是一個工廠接口有不少的行爲(這個纔是咱們常常用到的),接口的每一個行爲就是一個產品(一個方法結果)。接口
代碼示例:get
咱們有多個商品:產品
// 輪胎 public interface IWheel { void Use(); } // 汽車 public interface ICar { void Repair(); } ....
咱們的工廠均可以造不少商品:
public interface IFactory2 { // 輪胎
IWheel CreateWheel(); // 汽車
ICar CreateCar(); }
到這個其實能夠通俗的理解爲:工廠模式,就是把對象接口化抽象化的處理,
而後把對象的行爲,都抽象爲函數方法。
同時咱們能夠經過細分,實現接口套接口的模式,從而實現,代碼的可擴展性、低耦合度的功能。
應用場景:
若是系統的用戶信息來源不肯定性很高,那麼咱們設計一個IUser接口,來規範系統操做或者獲取人員信息的行爲,如:
UserEntity GetUserInfo(String _userCode);
Int32 InsertUserInfo(UserEntity _userInfo);
....
那麼,不管咱們的系統是被哪兒廠商的受權系統整合,咱們都不須要修改咱們的系統,由於咱們的系統調用的是IUser,
咱們只要根據不一樣廠商的受權系統,去寫一個IUser的適配器實現就能夠了。
這就是工廠模式最經常使用的一個應用場景。
源代碼下載(百度網盤):http://pan.baidu.com/s/1c03lAoC