簡單工廠,工廠方法和抽象工廠的區別

2021-05-28 04:50:19 字數 1638 閱讀 7960

看了網路上很多關於設計模式的方法,有的模式看起來相似,但本質還是區別很大的.像簡單工廠,工廠方法和抽象工廠就有很明顯的區別.

有乙個比較好理解的例子,在這跟大家介紹下:

1.如果乙個後花園只種蔬菜類,那麼就用簡單工廠就可以了.

2.如果後花園蔬菜品種繁多.得用工廠方法才可以,把共有的東西抽象出來.

3.如果要擴大後花園的規模,比如乙個在北方,乙個在南方,這樣工廠方法就無法實現了,就應當用抽象工廠,把各種各樣的植物,又組成乙個後花園.

所以我個人認為,簡單工廠是乙個工廠只生產一類的產品,面對的是具體的類,工廠方法是可以生產不同的產品,把公共的方法抽象出來,然後進行建立各種各樣的產品.抽象工廠把幾種產品劃出共同的東西,把相互依賴的物件抽象出來,只要實現這些介面就可以得到不同的產品.

具體例子: 

1.簡單工廠:

using system;

public inte***ce icar

public class bmwcar : icar }

public class benzcar : icar }

public class driver }

} public class client }

心得:優點是只要實現共有的介面就可以實現不同車跑的方式.但缺點就是要判斷哪一種車,造成要修改driver 類

2.工廠方法:

using system;

public inte***ce icar

public class bmwcar : icar }

public class benzcar : icar }

public abstract class driver

public class bmwdriver : driver }

public class benzdriver : driver }

class client }

心得:優點是符合了開放-封閉原則(ocp),從整體上還看不出什麼缺點.

3.抽象工廠:

using system;

public inte***ce ibusinesscar

public inte***ce isportcar

public class bmwbusinesscar : ibusinesscar

public class benzbusinesscar : ibusinesscar }

public class bmwsportcar:isportcar }

public class benzsportcar:isportcar }

public inte***ce idriver

public class bmwdriver:idriver

public isportcar sportcardriver() }

public class benzdriver:idriver

public isportcar sportcardriver() }

class client

心得:抽象方法似乎達到了完美境界.把開賓士的司機和開寶馬的司機的公共方法抽象出來,並對不同的司機建立不同的類,到時候不管是開什麼車的司機隨你新增.它們唯一的共同點都是開車.

簡單工廠,工廠方法,抽象工廠

簡單工廠,工廠方法,抽象工廠都屬於設計模式中的建立型模式。其主要功能都是幫助我們把物件的例項化部分抽取了出來,優化了系統的架構,並且增強了系統的擴充套件性。本文是本人對這三種模式學習後的乙個小結以及對他們之間的區別的理解。簡單工廠 簡單工廠模式的工廠類一般是使用靜態方法,通過接收的引數的不同來返回不...

簡單工廠 工廠方法 抽象工廠

簡單工廠 乙個工廠類 根據傳入的參量決定建立出哪一種產品類的例項 直接乙個工廠類,內部通過 swith operator add類實現該介面 adddao implements dao dao的實現類 客戶端 dao dao new adddao dao.createoper 產生物件 這樣如果需要...

簡單工廠 工廠方法 抽象工廠

一 簡單工廠 factory 集中管理物件的產生,業務 只需要呼叫相應的方法,傳入不同的引數區分物件,就能得到想要的物件了 把業務 和對應的物件解耦 建立乙個抽象類 public abstract class cellphone public abstract void show 建立實現抽象類的實...