简单工厂模式

 

1、简单工厂模式

2、题目:请用java语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。

3、UML类图

 

4、代码示例:

4.1、运算相关类:

Operation类:
import lombok.Data;

/**
 * 操作类
 */
@Data
public class Operation {

    private double numberA;

    private double numberB;

    public double calculate() throws Exception{

        double result = 0f;
        return result;

    }

}
View Code
OperationAdd类:
/**
 * 加法类
 */
public class OperationAdd extends Operation{

    @Override
    public double calculate() {
        return super.getNumberA() + super.getNumberB();
    }

}
View Code
OperationSub类:
/**
 * 减法类
 */
public class OperationSub extends Operation{

    public double calculate() {
        return super.getNumberA() - super.getNumberB();
    }

}
View Code
OperationMul类:
/**
 * 乘法类
 */
public class OperationMul extends Operation{

    public double calculate(){
        return super.getNumberA() * super.getNumberB();
    }

}
View Code
OperationDiv类:
/**
 * 除法类
 */
public class OperationDiv extends Operation{

    public double calculate() throws Exception{
        if(super.getNumberB() == 0){
            throw new Exception("除数不能为零!");
        }
        return super.getNumberA() / super.getNumberB();
    }

}
View Code

 

4.2、简单工厂类:

OperationFactory类:
/**
 * 操作工厂类
 */
public class OperationFactory {

    public static Operation creteOperate(String operate){

        Operation operation = null;
        switch (operate){
            case "+":
                operation = new OperationAdd();
            break;

            case "-":
                operation = new OperationSub();
            break;

            case "*":
                operation = new OperationMul();
            break;

            case "/":
                operation = new OperationDiv();
            break;
        }

        return operation;

    }

}
View Code

 

4.3、简单工厂模式客户端:

/**
 * 简单工厂模式客户端
 */
public class SimpleFactoryClient {

    public static void main(String[] args) throws Exception{

        Operation operation = OperationFactory.creteOperate("*");
        operation.setNumberA(3f);
        operation.setNumberB(4f);
        double result = operation.calculate();
        System.out.println(result);

    }

}
View Code

 

5、githubidemo-design-pattern

 

posted @ 2019-09-01 12:52  艾白羊  阅读(130)  评论(0编辑  收藏  举报