工厂方法模式(实现加总结)

本文深入讲解工厂方法模式,一种设计模式,它通过定义创建对象的接口,让子类决定实例化哪个类,从而实现了对象创建过程的封装和扩展。文章详细介绍了工厂方法模式的UML图、代码实现和与简单工厂模式的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工厂方法模式(Factory Method):
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类

如果没有看过简单工厂模式的话可以花一点点时间了解一下简单工厂模式

在简单工厂模式中说过,既然简单工厂类对分支耦合,那么我们就要把它拆开,根据依赖倒置原则,我们根据工厂类抽象出一个接口,所有的工厂都要实现这个接口。

下面是工厂方法模式的UML图
在这里插入图片描述
可以看到,与简单工厂模式的区别就在于把工厂抽象出了一个抽象工厂接口

代码实现

工厂接口

public interface Factory {

    public Operation createOperation() ;
    
}

实现接口的工厂类

public class AddFactory implements Factory{           // 加法工厂
 
    public Operation createOperation() {
        return new Add();
    }
}
 
public class SubFactory implements Factory{            // 减法工厂
 
    public Operation createOperation() {
        return new Sub();
    }
}
........乘法和除法类似

运算类不变

最后是客户端

public class Client {
 
    public static void main(String[] args) throws Exception { 
        Operation oper1 = addFactory.createOperation();
        Operation oper2 = subFactory.createOperation();
 
        System.out.println(oper1.getResult(1, 2));
        System.out.println(oper2.getResult(3, 4));
    }
}

总结
  在工厂方法模式中,核心的工厂类不再负责对相应子类的创建,而是声明一个子工厂类必须实现的接口,具体的实例化工作由子工厂类去做。这样整个体系并没有对修改开放,而是只对扩展开放,符合开放-封闭原则。
  我们如果想要加功能的话,就不是像简单工厂一样要修改工厂类了,而是把修改放到客户端,对于工厂类和运算类的改变就只是扩展。
  可以说工厂方法模式克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值