工厂方法模式

2022-04-01  本文已影响0人  请叫我平爷

父类

public abstract class Operator {

    private double d1;

    private double d2;


    public double getD1() {
        return d1;
    }

    public void setD1(double d1) {
        this.d1 = d1;
    }

    public double getD2() {
        return d2;
    }

    public void setD2(double d2) {
        this.d2 = d2;
    }
    
    public abstract double getResult();
}

加法类

public class OperatorAdd extends Operator{
    @Override
    public double getResult() {
        return this.getD1() + this.getD2();
    }
}

减法类

public class OperatorSub extends Operator{
    @Override
    public double getResult() {
        return this.getD1() - this.getD2();
    }
}

乘法类

public class OperatorMul extends Operator{
    @Override
    public double getResult() {
        return this.getD1() * this.getD2();
    }
}

除法类

public class OperatorDiv extends Operator{
    @Override
    public double getResult() {
        return this.getD1() / this.getD2();
    }
}

工厂接口

public interface Factory {
    Operator createFactory();
}

加法工厂

public class OperatorAddFactory implements Factory {
    @Override
    public Operator createFactory() {
        return new OperatorAdd();
    }
}

减法工厂

public class OperatorSubFactory implements Factory {
    @Override
    public Operator createFactory() {
        return new OperatorSub();
    }
}

乘法工厂

public class OperatorMulFactory implements Factory {
    @Override
    public Operator createFactory() {
        return new OperatorMul();
    }
}

除法工厂

public class OperatorDivFactory implements Factory {
    @Override
    public Operator createFactory() {
        return new OperatorDiv();
    }
}

使用

public static void main(String[] args) {
        Factory factory = new OperatorAddFactory();
        Operator operator = factory.createFactory();
        operator.setD1(111);
        operator.setD2(222);
        double res = operator.getResult();
        System.out.println(res);
    }

输出

333.0
上一篇 下一篇

猜你喜欢

热点阅读