Java基础教程(205)创建型模式之工厂方法:解锁Java工厂方法模式:优雅对象创建的万能钥匙

在软件设计中,我们经常需要创建对象,但直接使用new关键字实例化对象会使代码耦合度增高,不利于后续扩展和维护。工厂方法模式(Factory Method Pattern)应运而生,它提供了一种优雅的解决方案。

工厂方法模式核心思想

工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类,从而实现了创建者与具体产品的解耦。

模式结构分析

  • Product(产品接口):定义产品的规范
  • ConcreteProduct(具体产品):实现产品接口的具体类
  • Creator(创建者):声明工厂方法的核心抽象类
  • ConcreteCreator(具体创建者):实现工厂方法,返回具体产品实例

完整代码示例

// 产品接口
interface Vehicle {
    void manufacture();
}

// 具体产品类
class Car implements Vehicle {
    @Override
    public void manufacture() {
        System.out.println("生产汽车");
    }
}

class Motorcycle implements Vehicle {
    @Override
    public void manufacture() {
        System.out.println("生产摩托车");
    }
}

// 创建者抽象类
abstract class VehicleFactory {
    // 工厂方法
    public abstract Vehicle createVehicle();
    
    public void deliverVehicle() {
        Vehicle vehicle = createVehicle();
        vehicle.manufacture();
        System.out.println("交付完成");
    }
}

// 具体创建者
class CarFactory extends VehicleFactory {
    @Override
    public Vehicle createVehicle() {
        return new Car();
    }
}

class MotorcycleFactory extends VehicleFactory {
    @Override
    public Vehicle createVehicle() {
        return new Motorcycle();
    }
}

// 客户端使用
public class FactoryPatternDemo {
    public static void main(String[] args) {
        VehicleFactory carFactory = new CarFactory();
        carFactory.deliverVehicle();
        
        VehicleFactory motorcycleFactory = new MotorcycleFactory();
        motorcycleFactory.deliverVehicle();
    }
}

优势与适用场景

工厂方法模式最大优势在于遵循开闭原则,当需要添加新产品时,只需新增具体工厂和产品类,无需修改现有代码。它特别适用于以下场景:

  • 无法预知对象确切类型及其依赖关系时
  • 希望为库或框架提供扩展接口时
  • 需要将对象创建与使用分离以降低耦合度时

通过工厂方法模式,我们获得了极高的灵活性和可扩展性,为大型项目奠定了坚实的架构基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值