設計模式系列-工廠模式
工廠模式屬于創建型設計模式。是日常使用比較多的一種設計模式。比如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");
- }
- }
如果想增加新的Logger直接實現Logger和LoggerFactory就好了,看一下客戶端如何使用。
- public class FileLoggerFactory implements LoggerFactory {
- @Override
- public Logger createLogger() {
- //不同Logger的個性初始化工作
- Logger logger = new FileLogger();
- return logger;
- }
- }
總結
工廠模式是創建型模式之一,日常使用比較多,每類產品都有對應的一個工廠類。工廠模式把簡單工廠的內部邏輯遷移到了客戶端,當需要對功能擴展時,只需要修改客戶端就OK了。