我的设计模式

工厂模式

1、作用

  • 工厂模式将目的将创建对象的具体过程屏蔽隔离起来,从而达到更高的灵活性

2、定义

请添加图片描述

  • 工厂模式关键在于,允许你将对象的创建过程与使用过程分开,提供了一种灵活和可扩展的方式来创建对象。
  • 它适用于动态选择对象、复杂创建逻辑以及需要解耦的场景,使得代码更易于维护和扩展。

案例展示

public abstract class AbstractOperation {
    private double _numberA=0;
    private double _numberB=0;

    public void init(double _numberA,double _numberB){
        this._numberA=_numberA;
        this._numberB=_numberB;
    }
   //每个子类需实现父类的计算方法
    public abstract double compute();

    public double get_numberA() {
        return _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }
}

定义一个抽象类用于接收其子类的实例对象,便于动态使用.(这里不推荐使用接口,因为接口不能又自己的变量,虽然也能实现,但是把变量写在父类中方便一点).

public class PrimaryFactory {
    public static AbstractOperation createFactory(String operator) {
        AbstractOperation oper = null;
        switch (operator) {
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
            default:
                throw new RuntimeException("运算符输入错误");
        }
        return oper;
    }
}

做一个简单的工厂,用于动态生产子类。每个子类实现各自的compute方法.

public class CounterMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("简单工厂模式实现的计算器:");
        System.out.println("请输入计算的第一个数:");
        double numA = scanner.nextDouble();
        System.out.println("请输入你的运算符:");
        String oper = scanner.next();
        System.out.println("请输入计算的第二个数:");
        double numB = scanner.nextDouble();
        AbstractOperation factory = PrimaryFactory.createFactory(oper);
        factory.init(numA,numB);
        System.out.println("计算结果等于:"+factory.compute());
    }
}

客户端调用.
这简单的完成了一个计算器的运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值