設計模式 工廠模式(二)

2022-03-13 11:12:51 字數 860 閱讀 4635

參照:

《----------工廠模式----------》

使用者使用某乙個類去新建乙個例項的時候,並不用關心具體的實現過程,只呼叫例項的方法就好。

如上圖所示,1. 有乙個鳥類,定義了兩個方法:羽毛和翅膀;2. 繼承該鳥類實現了三個新的具體鳥類,分別有自己的特點;3. 設計乙個工廠類,可以根據傳入的名字引數,具體例項化不同的鳥類; 4. 客戶端在呼叫鳥類的時候,只需要使用名字呼叫工廠類方法就可以實現,不管具體鳥類的實現過程;

/// /// 所有鳥類的抽象基類

///

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

}

這樣的設計過程非常的好,但是也不滿足開閉原則,即在新增乙個具體鳥類的時候,需要在工廠類中新增乙個case。

有沒有更好的設計呢?

二 設計模式 工廠模式

一.傳統時以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,我...