Java版大话设计模式(一)---计算器---简单工厂模式
2018-01-17 08:54
337 查看
package dataStruct;
abstract class Operation {
protected double numberA = 0;
protected double numberB = 0;
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
//抽象方法在抽象类中只能声明,不能具体实现
public abstract double getResult() throws Exception;
}
class OperationAdd extends Operation {
@Override
public double getResult() {
return numberA+numberB;
}
}
class OperationSub extends Operation {
@Override
public double getResult() {
return numberA-numberB;
}
}
class OperationMul extends Operation {
@Override
public double getResult() {
return numberA*numberB;
}
}
class OperationDiv extends Operation {
@Override
public double getResult() throws Exception {
if(Double.doubleToLongBits(numberB) == Double.doubleToLongBits(0.0))
throw new Exception("除数不能为0");
return numberA/numberB;
}
}
//简单工厂模式类
class OperationFactory {
public static Operation createOperate(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;
}
}
//客户端代码
public class Main
{
public static void main(String[] args) throws Exception {
Operation ope = OperationFactory.createOperate("+");
ope.setNumberA(20.2);
ope.setNumberB(1.23);
System.out.println(ope.getResult());
}
}
abstract class Operation {
protected double numberA = 0;
protected double numberB = 0;
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
//抽象方法在抽象类中只能声明,不能具体实现
public abstract double getResult() throws Exception;
}
class OperationAdd extends Operation {
@Override
public double getResult() {
return numberA+numberB;
}
}
class OperationSub extends Operation {
@Override
public double getResult() {
return numberA-numberB;
}
}
class OperationMul extends Operation {
@Override
public double getResult() {
return numberA*numberB;
}
}
class OperationDiv extends Operation {
@Override
public double getResult() throws Exception {
if(Double.doubleToLongBits(numberB) == Double.doubleToLongBits(0.0))
throw new Exception("除数不能为0");
return numberA/numberB;
}
}
//简单工厂模式类
class OperationFactory {
public static Operation createOperate(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;
}
}
//客户端代码
public class Main
{
public static void main(String[] args) throws Exception {
Operation ope = OperationFactory.createOperate("+");
ope.setNumberA(20.2);
ope.setNumberB(1.23);
System.out.println(ope.getResult());
}
}
相关文章推荐
- java设计模式学习笔记之计算器中的简单工厂模式
- java简单工厂设计模式实现计算器
- 大话设计模式1 简单工厂模式 的java代码实现
- 大话设计模式中简单工厂模式的计算器实例的C++代码
- 大话设计模式java版--简单工厂模式
- 大话设计模式-----简单工厂模式与策略模式
- 简单的工厂模式(参考于大话设计模式)
- Java中的简单工厂模式
- 《大话设计模式》读书笔记一 简单工厂模式
- java设计模式之简单工厂模式
- 简单工厂模式【java版】
- java简单工厂模式
- Java设计模式:工厂模式(一)简单工厂模式
- 大话设计模式-策略模式与简单工厂模式
- java 设计模式 学习笔记(1) - 简单工厂模式
- 大话设计模式之C++实现---简单工厂模式
- 设计模式之一:Java中的简单工厂模式
- 简单的计算器程序可以用到简单工厂的设计模式
- JAVA设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 阎宏:Java语言简单工厂创立性模式介绍