简单工厂模式

为什么使用设计模式?

在开发中使用设计模式虽然会增加代码量,但是使用设计模式能使得代码更加灵活、可扩展和复用。

文章根据《大话设计模式》,记录学习历程。


百度百科:
简单工厂,工厂模式定义:提供创建对象的接口。
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类


计算器。

所有运算操作的父类,子类覆盖getResult()方法实现自身操作

public class Operator {

    private int a;
    private int b;

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public int getResult() throws Exception {
        return 0;
    }
}

工厂方法,根据传入的操作创建对用的实例方法

public class OperatorFactory {

    public static Operator createFactory(String operators) {
        Operator operator = null;
        switch (operators) {
            case "+":
                operator = new Add();
                break;
            case "-":
                operator = new Subtract();
                break;
            case "*":
                operator = new Multiply();
                break;
            case "/":
                operator = new Divide();
        }
        return operator;
    }
}

加法运算

public class Add extends Operator {

    @Override
    public int getResult() {
        return getA() + getB();
    }
}

减法运算

public class Subtract extends Operator{

    @Override
    public int getResult() {
        return getA() - getB();
    }
}

* 乘法运算*

public class Multiply extends Operator{

    @Override
    public int getResult() {
        return getA() * getB();
    }
}

除法运算

public class Divide extends Operator{

    @Override
    public int getResult() throws Exception {
        if (getB() == 0) {
            throw new Exception("除数不能为0");
        }
        return getA() / getB();
    }
}

main方法

public class Main {

    public static void main(String[] args) throws Exception {
        Operator operator;
        operator = OperatorFactory.createFactory("/");
        operator.setA(1);
        operator.setB(2);
        int result = operator.getResult();
        System.out.println(result);
    }
}

上面是一个简单工厂方法,如果要添加模运算或者区余运算,只要重新添加新的方法,继承Operator 类,重新父类的getResult()方法,在工厂方法中添加操作对应创建实例即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值