白話設計模式 工廠模式之工廠方法模式

2021-09-01 10:38:14 字數 980 閱讀 8995

簡單工廠雖然對產品生產提供了非常好的封裝,但並沒有遵循物件導向設計的」開放-關閉原則「,工廠方法模式可解決這個問題。

「開放-關閉原則」:對擴充套件開放、對修改關閉。什麼意思呢?我的理解是:當我們要擴充套件新功能時,不需要修改原來的**,簡單的新增某個類、或繼承某個抽象類、或實現某個介面就可以完成。

再看上篇中******factory這個工廠類,如果我們要新增一種輸出裝置(這是實際專案中肯定會面臨的變化)則必須修改這個類,即新增乙個if/else或switch/case語句。

下面是工廠方法模式:

public inte***ce output {}

public class monitor implements output {}

public class print implements output {}

public inte***ce outputfactory

public class monito***ctory implements outputfactory

}public class printfactory implements outputfactory

}

我們將原來的工廠類改為介面或抽象型別,然後將createoutput()方法中實際生產「裝置」的if/else分支操作分解到抽象工廠類的各個具體子類工廠中去,將產品的生成交給子類工廠來完成。每個具體子類工廠負責完成一中產品的生產。

這時,如果我們想新增一種輸出裝置,如file,則完全不用修改原有的**,將file實現output介面,然後再新增乙個生成這個產品的工廠filefactory即可。

public class main 

}

這樣,我們就解決了「開放-關閉」問題,並且允許客戶端隨意消費產品。

工廠方法模式的關鍵在於:乙個抽象產品類派生多個具體產品類、乙個抽象工廠類派生多個具體工廠子類、每個具體工廠子類負責生產一種具體產品、客戶端針對介面程式設計。

設計模式 工廠模式之工廠方法模式

工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...

設計模式4 2 工廠模式之工廠方法

工廠方法 定義乙個建立物件的介面,由子類決定例項化哪個類,把例項化類的邏輯推遲到子類中 在本示例中 我們在cakestore的抽象類中定義了建立cake的介面createcake,子類在繼承此抽象類後必須實現此方法,因此,決定例項化哪個類的邏輯推遲到了子類,由子類決定。在我們的ordercake方法...

設計模式之簡單工廠,工廠方法模式

qt暫時斷了,專案上暫時不用。這段時間回顧以前寫的 不忍直視,現在的也好不 去,索性看看設計模式吧,就當練內功了 啦啦。廢話不說上 c 設計乙個簡單的計算器,只實現加減,其他的暫不考慮,namespace my factory private double dnumbera 0 private do...