工廠模式屬于創建型設計模式。是日常使用比較多的一種設計模式。比如Logback,Spring等框架中都大量使用該設計模式。
上篇文章提到的簡單工廠模式雖然在簡單系統可以用一用,但是因為工廠類本身包含太多業務邏輯,而且如果想增加新的圖表類型,需要修改工廠類等缺點。所以我們真正生產系統更多地使用工廠模式。
工廠模式為每一個類都定義一個單獨的工廠類,該工廠類只負責創建單一的產品。
舉個例子
通過工廠模式實現日志的創建,為不同種類的Logger分別創建不同類型的工廠。
來看一下UML圖:
來看一下代碼如何實現
先來定義一個Logger接口,以及LoggerFactory接口
public interface Logger { void writeLogger();}復制代碼
public interface LoggerFactory{ Logger createLogger();}復制代碼
分別定義FileLogger和FileLoggerFactory
public class FileLogger implements Logger { @Override public void writeLogger() { System.out.println("File logger"); }}復制代碼
public class FileLoggerFactory implements LoggerFactory { @Override public Logger createLogger() { //不同Logger的個性初始化工作 Logger logger = new FileLogger(); return logger; }}復制代碼
如果想增加新的Logger直接實現Logger和LoggerFactory就好了,看一下客戶端如何使用
public class Client { public static void main(String[] args){ Logger logger; LoggerFactory loggerFactory; loggerFactory = new FileLoggerFactory(); logger = loggerFactory.createLogger(); logger.writeLogger(); }}復制代碼
總結
工廠模式是創建型模式之一,日常使用比較多,每類產品都有對應的一個工廠類。工廠模式把簡單工廠的內部邏輯遷移到了客戶端,當需要對功能擴展時,只需要修改客戶端就OK了。
作者:花括號MC
鏈接:https://juejin.cn/post/7008785463775346695
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。