设计模式【二】:工厂模式

283 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

写在前面

设计模式,其实在一定程度上代表着最优解,最佳实践,由一部分开发人员根据经验总结而出的解决方案,分别针对不同的场景的最优解决方案。

在当前环境下,设计模式也被开发人员极为推崇,并且利用其解决众多的问题,所以,学习设计模式刻不容缓。

下面我们就来看一下“工厂模式”。

工厂模式与单例模式一样,都是属于创建型设计模式,因为他们都是提供创建对象的解决方案。

工厂模式内部实现提供了接口来进行规范不同情况下创建对象的规则,由实现类对其进行实现,当开发人员去使用时,不需要关心其内部实现逻辑,只需要根据自身的需求实现不同的子类即可。

使用场景

我们最常用的日志收集器,就用到了这个设计模式,我们开发人员在使用的过程中,只需要实现不同的子类,就能判断出我们要使用的日志收集器的类型。

优缺点

优点就是开发人员只需要知道子类名称就可以进行创建对象来调用具体的方法,扩展性非常高,如果加入一种不同的方式,只需要基于接口再创建一个子类即可。

缺点就是随着类型的增多,我们的代码也会变得特别多,创建的类也会增多,长此以往不利于维护。

代码实现

实现一个日志保存接口。

public interface logInterface{
 void save();
}

然后创建对应的工厂类。

保存到A路径下

public class A implements logInterface{
  public void save(){
    //保存到A路径下的逻辑
  }
}

保存到B路径下

public class B implements logInterface{
  public void save(){
    //保存到B路径下的逻辑
  }
}

保存到C路径下

public class C implements logInterface{
  public void save(){
    //保存到C路径下的逻辑
  }
}

最后创建一个工厂类,用于对外统一暴露

public class Log{
  
  public logInterface(String type){
      if(type.equalsIgnoreCase("A")){
         return new A();
      }else if(type.equalsIgnoreCase("B")){
         return new B();
      }else if(type.equalsIgnoreCase("C")){
         return new C();
      }
      return null;
  }
    
}