工厂模式属于创建型设计模式。是日常使用比较多的一种设计模式。比如Logback,Spring等框架中都大量使用该设计模式。

上篇文章提到的简单工厂模式虽然在简单系统可以用一用,但是因为工厂类本身包含太多业务逻辑,而且如果想增加新的图表类型,需要修改工厂类等缺点。所以我们真正生产系统更多地使用工厂模式。

工厂模式为每一个类都定义一个单独的工厂类,该工厂类只负责创建单一的产品。

举个例子

通过工厂模式实现日志的创建,为不同种类的Logger分别创建不同类型的工厂。

来看一下UML图:

九种设计模式(设计模式系列工厂模式)(1)

来看一下代码如何实现

先来定义一个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来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

,