设计模式之简单工厂模式

一 、定义

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

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

  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设计模式之一。

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

相关推荐
许彰午28 分钟前
34_Java设计模式之单例模式
java·单例模式·设计模式
石一峰69917 小时前
C 语言函数设计模式实战经验
c语言·开发语言·设计模式
qq_2975746719 小时前
设计模式系列文章(基础篇第22篇):访问者模式——分离数据结构与操作,实现灵活扩展
数据结构·设计模式·访问者模式
刀法如飞1 天前
领域驱动 vs 本体驱动:DDD 代码建模与 Ontology 语义建模的对比分析
设计模式·架构设计·领域驱动
我爱cope2 天前
【Agent智能体26 | 多智能体-多智能体工作流】
人工智能·设计模式·语言模型·职场和发展
咖啡八杯2 天前
【无标题】
java·后端·设计模式
折哥的程序人生 · 物流技术专研2 天前
Java 23 种设计模式:从踩坑到精通 | 适配器模式 —— 让不兼容的接口也能一起工作
java·设计模式·面试·适配器模式·单一职责原则
布朗克1682 天前
33 设计模式精讲
java·单例模式·设计模式
geovindu2 天前
python: Generators Pattern
开发语言·python·设计模式·生成器模式