Java设计模式-(创建型)工厂模式

代码仓库:https://gitee.com/yangsiyuan/Design-Pattern

创建型设计模式:聚焦于实例化对象,通常提供一种隐藏创建逻辑的形式,取代直接使用new运算符实例化对象

写在前面的话
工厂模式,一般针对需要对实际操作细节进行隐藏,并需要保证扩展性的场景。比较常见的比如:

  • Spring data jpa提供JpaRepository对象,隐藏实际操作的数据库,实现多种数据库兼容,且在切换底层数据库时,对业务层无影响
  • Spring boot提供AmqpTemplate对象,同样对多种消息中间件实现了兼容、以及无感切换

1. 定义

工厂模式(Factory Pattern):对客户端隐藏具体的对象创建逻辑,并且暴露接口来指向新创建的对象

  • 核心定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行

  • 优点:扩展性高,若想增加子类,只需要扩展工厂类即可;封装性高,调用者只需知道对象名称,无需关心实现

  • 应用场景:日志记录(无需关心文件存储的方式)、数据库访问(无需关心访问的数据库类型)

2. 代码实现

1)定义接口

// 接口
public interface ICar {
  void run();
}

2)定义实现类

public class Benz implements ICar {

   @Override
   public void run() {
     System.out.println("Benz is runnning!!");
   }
}
public class Honda implements ICar{

   @Override
   public void run() {
     System.out.println("Honda is running!!");
   }
}

3)定义工厂类

  • 提供一个public接口,通过名称,获取对应的对象
  • 返回对象通过接口接收
public class CarFactory {

 // 工厂类
 public ICar getCar(String brandName){
   if(brandName == null){
     return null;
   }

   if("Benz".equals(brandName)){
     return new Benz();
   }else if("Honda".equals(brandName)){
     return new Honda();
   }
   return null;
   }
}

4)调用demo

public class FactoryPatternTest {
 public static void main(String[] args) {
 CarFactory carFactory = new CarFactory();

 ICar benz = carFactory.getCar("Benz");
 benz.run();

 ICar honda = carFactory.getCar("Honda");
 honda.run();
 }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容