设计模式系列——工厂模式

878 阅读2分钟

原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。

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

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

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

举个例子

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

来看一下UML图:

factory.png

来看一下代码如何实现

先来定义一个Logger接口,以及LoggerFactory接口

public interface Logger {
    void writeLogger();
}
public interface LoggerFactory{
    Logger createLogger();
}

分别定义FileLoggerFileLoggerFactory

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直接实现LoggerLoggerFactory就好了,看一下客户端如何使用

public class Client {
    public static void main(String[] args){
        Logger logger;
        LoggerFactory loggerFactory;

        loggerFactory = new FileLoggerFactory();
        logger = loggerFactory.createLogger();
        logger.writeLogger();
    }
}

总结

工厂模式是创建型模式之一,日常使用比较多,每类产品都有对应的一个工厂类。工厂模式把简单工厂的内部逻辑迁移到了客户端,当需要对功能扩展时,只需要修改客户端就OK了。

推荐阅读

1. Java并发编程那些事儿(十)——最后的总结

2. 程序员应该掌握的常用网络问题定位工具

3. Awk这件上古神兵你会用了吗

4. 手把手教你搭建一套ELK日志搜索运维平台

原创:花括号MC(微信公众号:huakuohao-mc)。关注JAVA基础编程及大数据,注重经验分享及个人成长。