简单工厂模式
简单工厂模式:不符合 开放-封闭 原则,对每一次扩展时都要更改工厂类,这就是对修改开放了,当然不符合 开放-封闭 原则。
Operator.java 类:
package sampleFactory; import java.math.BigDecimal; public abstract class Operator { BigDecimal numA; BigDecimal numB; BigDecimal result ; public abstract BigDecimal getResult(); }
OperatorAdd.java类
package sampleFactory; import java.math.BigDecimal; public class OperatorAdd extends Operator { @Override public BigDecimal getResult() { System.out.println(numA); System.out.println(numB); result = numA.add(numB); return result; } }
OperatorDevide.java类
package sampleFactory; import java.math.BigDecimal; public class OperatorDevide extends Operator { @Override public BigDecimal getResult() { result = numA.divide(numB); return result; } }
OperatorMul.java类
package sampleFactory; import java.math.BigDecimal; public class OperatorMul extends Operator { @Override public BigDecimal getResult() { result = numA.multiply(numB); return result; } }
OperatorSub.java类
package sampleFactory; import java.math.BigDecimal; public class OperatorSub extends Operator { @Override public BigDecimal getResult() { result = numA.subtract(numB); return result; } }
SampleFactory.java类
package sampleFactory; public class SampleFactory { Operator op ; public Operator createOperator(String operator){ switch(operator){ case "+": op = new OperatorAdd(); break; case "-": op = new OperatorSub(); break; case "*": op = new OperatorMul(); break; case "/": op = new OperatorDevide(); } return op ; } }
Business.java类
package sampleFactory; import java.math.BigDecimal; import java.util.Scanner; public class Business { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入数字A:"); BigDecimal numA = sc.nextBigDecimal(); System.out.println("请输入操作符:"); String operator = sc.next(); System.out.println("请输入数字B:"); BigDecimal numB = sc.nextBigDecimal(); SampleFactory sf = new SampleFactory(); Operator op = sf.createOperator(operator); op.numA = numA ; op.numB = numB ; BigDecimal result = op.getResult(); System.out.println("运算结果:"+result); sc.close(); } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步