你还不懂设计模式? - 工厂方法模式

工厂方法模式是创建对象的一种方式。使用场景:

  1. 需要频繁创建对象。且创建对象需要大量的代码逻辑
  2. 应用层不依赖与产品实例的创建和实现细节
  3. 通过接口的子类来指定创建哪一个对象

来看一下工厂方法模式在实际应用中的使用。如在常见的日志模块中。现在Java Web应用使用的日志都是基于slf4j 。看在这里面的实现:

 private final static Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class);

对应的实现如下:

  public static Logger getLogger(Class<?> clazz) {
     
        Logger logger = getLogger(clazz.getName());
        ...
        return logger;
    }
  public static Logger getLogger(String name) {
     
       //获取ILoggerFactory的实现类的实例
       ILoggerFactory iLoggerFactory = getILoggerFactory();
       //用IloggerFactory实现类的实例去构造一个Logger实例,不用关心构造实现细节
       return iLoggerFactory.getLogger(name);
   }

这就是典型的工厂方法,只要项目中使用的基于slf4j的日志实现,我们就可以通过这一行代码来获取对应的日志实例。不管你使用的log4j , logback,log4j2等等。这一行代码就可以获取对应的日志的实现。
你还不懂设计模式? - 工厂方法模式_第1张图片

在spring源码中,FactoryBean#getObject()就是经典的工厂方法的应用。

你可能感兴趣的:(设计模式,java)