Java实现简单计算器功能【简单工厂模式】
首先创建一个包package【com.simpleFactory】,给自己的计算器开辟出一处空间来。
【说明】软件包机制:
1、 为了解决类的命名冲突问题,在类名前加命名空间(包机制)
2、 在Java中使用package语句定义包。(单包、复包)
3、 package定义的格式,通常采用公司域名倒叙方式。
例如:com.microsoft.oa.system;
以上包含义:microsoft公司开发oa项目,system是oa项目中其中一个模块
package定义的全格式:公司域名倒叙.项目名.模块名;
4、 package语句只能出现在.java源文件的第一行。
5、 完整的类名是带有包的。
6、 带有package语句的java源文件必须这样编译:
javac –d 生成路径 java源文件路径(绝对路径和相对路径)
7、 运行:
java com.microsoft.oa.system.test
【Java代码】
//Operation类:存储运算对象和得到结果的方法getResultValue()
package com.simpleFactory;
public class Operation
{
private double numberA;
private double numberB;
public double getResultValue()
{
return 0.0; //默认返回结果
}
public double getNumberA()
{
return numberA;
}
public double getNumberB()
{
return numberB;
}
public void setNumberA(double numberA)
{
this.numberA = numberA;
}
public void setNumberB(double numberB)
{
this.numberB = numberB;
}
}
//Addition类:实现加法运算
package com.simpleFactory;
public class Addition extends Operation
{
public double getResultValue()
{
return getNumberA() + getNumberB();
}
}
//Subtraction类:实现减法运算
package com.simpleFactory;
public class Subtraction extends Operation
{
public double getResultValue()
{
return getNumberA() - getNumberB();
}
}
//Multiplication类:实现乘法运算
package com.simpleFactory;
public class Multiplication extends Operation
{
public double getResultValue()
{
return getNumberA() * getNumberB();
}
}
//SimpleFactory类:简单工厂类,用来实例化运算方法
package com.simpleFactory;
public class SimpleFactory
{
private Operation operation;
public Operation factoryOperate(String type)
{
switch (type)
{
case "+":
operation = new Addition(); break;
case "-":
operation = new Subtraction(); break;
case "*":
operation = new Multiplication(); break;
}
return operation;
}
}
//test类:实验计算器
package com.simpleFactory;
public class test
{
public static void main(String[] args)
{
java.util.Scanner sc = new java.util.Scanner(System.in);
SimpleFactory factory = new SimpleFactory();
System.out.print("Please input a Number[A]:");
double NumA = sc.nextDouble();
System.out.print("Please input another Number[B]:");
double NumB = sc.nextDouble();
System.out.print("Please input a operation[+、-、*]:");
String oper = sc.next();
Operation operation = factory.factoryOperate(oper);
operation.setNumberA(NumA);
operation.setNumberB(NumB);
double result = operation.getResultValue();
System.out.print("result = " + result);
}
}
/*
【编译】
javac –d D:\ *.java【首先要用cd命令进入.java源文件的路径】
【运行】
java com.simpleFactory.test
*/