工厂方法模式

本文介绍了工厂方法模式的基本概念,对比简单工厂模式,突出其遵循开放-封闭原则的优点,并提供了具体的代码实现示例。

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

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延伸到其子类。

对于简单工厂模式来说,其优点是工厂类包含了必要的逻辑判断,但是在新增操作类时,不仅仅增加了类还要修改工厂类的判断处语句(switch)。所以说简单工厂不仅对扩展开放,还对修改开放了,这样就违背了开放-封闭原则。
而工厂方法模式则将原先的工厂类进行抽象,让这个抽象工厂类的子类来决定实例化哪个操作类。这样,在增加一个功能类时,只需要再增加一个抽象工厂的子类即可,这就保证了开放-封闭原则。

当然,注意一下就会发现这样会让判断交由客户端处理,这是不合适的,这个之后可以使用Java中的反射机制来解决。

所需的类:

  • IFactory 抽象工厂类
  • AddFactory/SubFactory 具体的工厂类,继承自IFactory
  • Operation 操作的抽象类
  • AddOperation/SubOperation 具体的操作类

代码实现:

IFactory (抽象工厂类)

public interface IFactory {

    public abstract Operation createOperation();
}

AddOperationFactory

public class AddOperationFactory implements IFactory{

    @Override
    public Operation createOperation() {
        // TODO Auto-generated method stub

        return new AddOperation();
    }

}

SubOperationFactory

public class SubOperationFactory implements IFactory{

    @Override
    public Operation createOperation() {
        // TODO Auto-generated method stub
        return new SubOperation();
    }

}

Operation

public abstract class Operation {

    public double num_a,num_b;
    public abstract  double getResult();
}

Application(应用类)

public class Application {

    public static void main(String args[]){

        IFactory factory = new SubOperationFactory();

        Operation ope = factory.createOperation();
        ope.num_a = 3;
        ope.num_b = 2;
        System.out.println(ope.getResult());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值