java设计模式——简单工厂

好处:
每个功能都有自己的类,新增新的运算或移除某个运算时不需要改全部的代码
缺点:

原理:通过客户选择来确定实例化哪个对象

客户端:
public class Text {
    public static void main(String[] args) {
        Operation operation= SelOperator.getIns('+');
        operation.setParameters(5, 10);
        System.out.println(operation.getResult());
    }
}
工厂类
import javax.management.RuntimeErrorException;
public class SelOperator {
    public static Operation getIns(char str){
        Operation opera=null;
        switch (str){//更具用户的选择来实例化对象
        case '+':opera= new OperatorAdd();break; 
        case '-':opera= new OperatorSubtract();break; 
        case '*':opera= new OperatorMultiplication();break; 
        case '/':opera= new OperatorDivision();break; 
        }
        return opera;
    }
}
加减乘除类

class OperatorAdd extends Operation{
    public double getResult() {
        return OperationA+OperationB;
    }
}
class OperatorSubtract extends Operation{
    public double getResult() {
        return OperationA-OperationB;
    }
}
class OperatorMultiplication extends Operation{
    public double getResult() {
        return OperationA*OperationB;
    }
}
class OperatorDivision extends Operation{
    public double getResult() {
        if(OperationB!=0)
            return OperationA/OperationB;
        else System.out.println("不能除0");
        throw new RuntimeErrorException(null, "除0了");
    }
}
运算的抽象类
public abstract class Operation {
    protected double OperationA;
    protected double OperationB;
    public void setParameters(double OperationA,double OperationB){
        this.OperationA=OperationA;
        this.OperationB=OperationB;
    }
    public abstract double getResult();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值