工厂模式属于创建型设计模式。是日常生活中使用频率比较高的一种设计模式。比如Logback、Spring等框架就大量使用了这种设计模式。上一篇文章中提到的简单工厂模式虽然可以在简单的系统中使用,但是由于工厂类本身包含了太多的业务逻辑,如果要添加新的图表类型,需要修改工厂类等缺点。所以我们的生产系统使用了更多的工厂模式。工厂模式为每个类定义了一个单独的工厂类,只负责创建单个产品。比如日志的创建是通过工厂模式实现的,针对不同类型的Logger创建不同类型的工厂。看一下UML图:让我们看看代码是如何实现的。首先定义一个Logger接口和一个LoggerFactory接口。publicinterfaceLogger{voidwriteLogger();}publicinterfaceLoggerFactory{LoggercreateLogger();}分别定义了FileLogger和FileLoggerFactory。publicclassFileLoggerimplementsLogger{@OverridepublicvoidwriteLogger(){System.out.println("Filelogger");}}如果想增加一个新的Logger,直接实现Logger和LoggerFactory,看看客户端如何使用。publicclassFileLoggerFactoryimplementsLoggerFactory{@OverridepublicLoggercreateLogger(){//不同Logger的个性化初始化工作Loggerlogger=newFileLogger();returnlogger;}}总结工厂模式是创建模式之一,在日常生活中使用频率很高。每种类型的产品都有对应的工厂类。工厂模式将简单工厂的内部逻辑迁移到了客户端。当需要扩展功能时,只需修改客户端即可。
