Java设计模式-简单工厂模式实现计算器
上述代码是根据类图实现,根据类图中的属性作用域和类之间的关系写出的代码。该代码仅作为实现简单工厂模式的参考,其中不乏违背开发原则的部分。持不同意见者欢迎探讨。
·
简单工厂模式:建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
- 优点是比较好理解,简单易操作。
- 缺点是类的创建依赖工厂类,如果想要拓展程序,必须对工厂类进行修改,这违反了设计模式的开闭原则(OCP),即对扩展开放,对修改关闭。
现有一系统提供一个简单计算器,具有简单的加、减、乘、除法的功能,系统可以根据用户的选择实例化相应的操作类。现使用简单工厂模式设计该系统。
类图:
代码实现:
一、Calculating(计算类)类:
package 简单工厂模式;
public abstract class Calculating {
public double NumberA;
public double NumberB;
public abstract double GetResult();
public void setNumberA(double numberA) {
NumberA = numberA;
}
public void setNumberB(double numberB) {
NumberB = numberB;
}
}
二、加法类:
package 简单工厂模式;
public class Addition extends Calculating {
public double GetResult(){
return NumberA+NumberB;
}
}
三、减法类:
package 简单工厂模式;
public class Subtraction extends Calculating{
public double GetResult(){
return NumberA-NumberB;
}
}
四、乘法类:
package 简单工厂模式;
public class Multiplication extends Calculating{
@Override
public double GetResult() {
return NumberA*NumberB;
}
}
五、除法类:
package 简单工厂模式;
public class Division extends Calculating{
@Override
public double GetResult() {
if(NumberB !=0){
return NumberA/NumberB;
}
else {
System.out.println("除数需为非零数!!!");
}
return 0;
}
}
六、工厂类:
package 简单工厂模式;
public class CalculatingFactory {
public static Calculating creatCalculating(String x){
Calculating calculating=null;
switch (x){
case "+": calculating=new Addition(); break;
case "-": calculating=new Subtraction(); break;
case "*": calculating=new Multiplication(); break;
case "/": calculating=new Division(); break;
}
return calculating;
}
}
七、客户端:
package 简单工厂模式;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入一个数");
double x=scanner.nextInt();
System.out.println("输入符号");
String ope=scanner.next();
System.out.println("再输入一个数");
double y=scanner.nextInt();
Calculating calculating = CalculatingFactory.creatCalculating(ope);
calculating.setNumberA(x);
calculating.setNumberB(y);
double result = calculating.GetResult();
System.out.println("结果:"+result);
}
}
八、运行结果:
结语:上述代码是根据类图实现,根据类图中的属性作用域和类之间的关系写出的代码。该代码仅作为实现简单工厂模式的参考,其中不乏违背开发原则的部分。持不同意见者欢迎探讨。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)