设计模式-简单工厂模式 Java

模式概述

简单工厂模式(Simple Factory Pattern)通过一个工厂类根据传入的参数来动态的创建不同类型对象,将对象的实例化与客户端代码解耦。属于创建型模式,适用于产品类型有限且不频繁变化的场景。

简单代码示例

// 1. 抽象产品接口
interface Product {
    void use();
}

// 2. 具体产品实现
class ConcreteProductA implements Product {
    @Override
    public void use() {
        System.out.println("Using Product A");
    }
}

class ConcreteProductB implements Product {
    @Override
    public void use() {
        System.out.println("Using Product B");
    }
}

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

// 4. 使用示例
public class Test{
    public static void main(String[] args) {
        SimpleFactory factory = new SimpleFactory();
        
        // 创建产品A
        Product productA = factory.createProduct("A");
        productA.use();  // 输出: Using Product A
        
        // 创建产品B
        Product productB = factory.createProduct("B");
        productB.use();  // 输出: Using Product B
    }
}

技术细节

1. 模式组成

组件职责说明
Product抽象产品接口,定义产品的公共方法(如 use())
ConcreteProductA/B具体产品类,实现产品接口的业务逻辑
SimpleFactory工厂类,根据输入参数创建对应的产品实例

2. 优点与缺点

优点:

  • 解耦工厂和具体产品类
  • 集中化对象创建逻辑,便于维护
  • 符合单一职责原则

缺点:

  • 违反开闭原则(新增产品需修改工厂类)
  • 静态类没有办法被继承
  • 工厂类职责过重,产品过多时逻辑复杂

扩展建议

  1. 配置文件扩展:通过读取配置文件实现产品类型的动态配置。
  2. 枚举优化:使用枚举类型替代字符串参数或者枚举中配置参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值