设计模式之简单工厂模式

一 、定义

简单工厂模式是一种创建型设计模式,它提供一个统一的接口来创建对象,而不需要客户端直接实例化对象。简单工厂模式通过封装创建对象的逻辑,简化了对象的创建过程,同时也提高了代码的可维护性和扩展性。缺点是:每当增加具体得产品类得时候,需要更改工厂类得内容,不合符开闭原则。

简单工厂模式的使用场景包括以下几种:

  1. 当需要根据不同的条件创建不同类型的对象时,可以使用简单工厂模式。例如,根据用户的权限级别创建不同类型的用户对象。

  2. 当需要统一管理创建对象的逻辑时,可以使用简单工厂模式。例如,通过一个工厂类来创建不同类型的数据库连接对象。

  3. 当对象的创建逻辑比较复杂,包含大量的条件判断和多个步骤时,可以使用简单工厂模式。它可以将复杂的创建过程封装在一个工厂类中,使客户端只需要关注获取对象即可。

二、代码示例

下面是一个简单工厂模式的示例代码:

java 复制代码
// 定义一个产品接口
public interface Product {
  void operation();
}

// 具体产品类A
public class ConcreteProductA implements Product {
  @Override
  public void operation() {
    System.out.println("ConcreteProductA operation");
  }
}

// 具体产品类B
public class ConcreteProductB implements Product {
  @Override
  public void operation() {
    System.out.println("ConcreteProductB operation");
  }
}

// 简单工厂类
public class SimpleFactory {
  public static Product createProduct(String type) {
    if (type.equals("A")) {
      return new ConcreteProductA();
    } else if (type.equals("B")) {
      return new ConcreteProductB();
    } else {
      throw new IllegalArgumentException("Invalid type: " + type);
    }
  }
}

// 客户端使用简单工厂类创建产品
public class Client {
  public static void main(String[] args) {
    Product productA = SimpleFactory.createProduct("A");
    productA.operation();

    Product productB = SimpleFactory.createProduct("B");
    productB.operation();
  }
}

上面示例中,产品接口(Product)定义了产品的操作方法,具体产品类A和B实现了该接口。简单工厂类(SimpleFactory)根据客户端传入的参数来创建不同类型的产品对象。客户端(Client)使用简单工厂类来创建产品并调用其操作方法。

通过使用简单工厂模式,客户端不需要知道具体的产品类,只需通过简单工厂类来创建产品对象。当需要新增产品时,只需要在简单工厂类中添加对应的创建逻辑即可,无需修改客户端的代码。这提高了代码的可维护性和扩展性。

注意 :简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。

如有错误,欢迎指出,期待和大家共同进步-------------------------------------------------------------------------------------

相关推荐
乐观的山里娃10 小时前
【设计模式 08】装饰器:加钱加服务
设计模式
魔法阵维护师13 小时前
从零开发游戏需要学习的c#模块,第十章(设计模式入门)
学习·游戏·设计模式·c#
用户3563029048713 小时前
【设计模式】组合模式——树形结构的统一处理
设计模式
乐观的山里娃19 小时前
【设计模式 12】原型:复制成功
设计模式
傻啦嘿哟20 小时前
办公Agent与人工审核的“握手协议”:关键操作二次确认的设计模式
设计模式
hssfscv20 小时前
软件设计师2021上、下上午题错题解析+2022上、下下午题训练5道 练习真题训练16
笔记·设计模式·uml
乐观的山里娃1 天前
【设计模式 13】命令:覆水能收
设计模式
乐观的山里娃1 天前
【设计模式 11】建造者:配置像天书
设计模式
看山是山_Lau2 天前
建造者模式:复杂对象如何一步步构建
设计模式·建造者模式
霸道流氓气质2 天前
业务链路追踪日志设计模式 — 从原理到实践
设计模式