大话设计模式之简单的工厂模式
2017-03-13 20:48
316 查看
通过面向对象的三大特征封装、继承和多态,简单的计算器代码实现
Operation运算类,这是一个父类,所有运算方法都继承此类。
这是一个抽象的类,里面有一个抽象的方法getResultI(),和两个Number属性。之所以使用抽象类,是因为继承抽象类,必须重写抽象类的抽象方法,通过子类实现计算功能。
OperationAdd 加法类,继承运算类
OperationSubtract 减法类,继承运算类
OperationMultiply 乘法类,继承运算类
OperationDivide 除法类,继承运算泪
简单的工厂模式,就是用一个单独的类来做实例化对象的过程,这就是工厂,来,让我们看看工厂类怎么写。
OperationFactory 简单的运算工厂类
这样子,只需要输入运算符号,工厂就会实例化出合适的对象,通过多态,返回父类的方法实现了计算器的结果。
最后写一个Main方法实现计算功能
如果以后需要更改加法运算,只需要改OperationAdd这个类就可以,需要添加各种复杂的运算,只需要添加相应的运算子类就可以,然后在修改运算类工厂,在switch中添加分支。
这样一个简单的工厂模式就实现了,这里面用到了面向对象的三大特征:封装一个抽象的运算父类,所以的算法类全部继承父类,通过算法工厂,多态的实例化出合适的对象。
Operation运算类,这是一个父类,所有运算方法都继承此类。
public abstract class Operation { public BigDecimal numberA; public BigDecimal numberB; public BigDecimal getNumberA() { return numberA; } public void setNumberA(BigDecimal numberA) { this.numberA = numberA; } public BigDecimal getNumberB() { return numberB; } public void setNumberB(BigDecimal numberB) { this.numberB = numberB; } public abstract BigDecimal getResult(); }
这是一个抽象的类,里面有一个抽象的方法getResultI(),和两个Number属性。之所以使用抽象类,是因为继承抽象类,必须重写抽象类的抽象方法,通过子类实现计算功能。
OperationAdd 加法类,继承运算类
public class OperationAdd extends Operation { public BigDecimal getResult(){ BigDecimal result = null; result = numberA.add(numberB); return result; } }
OperationSubtract 减法类,继承运算类
public class OperationSubtract extends Operation { public BigDecimal getResult(){ BigDecimal result = null; result = numberA.subtract(numberB); return result; } }
OperationMultiply 乘法类,继承运算类
public class OperationMultiply extends Operation { public BigDecimal getResult(){ BigDecimal result = null; result = numberA.multiply(numberB); return result; } }
OperationDivide 除法类,继承运算泪
public class OperationDivide extends Operation { public BigDecimal getResult(){ BigDecimal result = null; result = numberA.divide(numberB); return result; } }
简单的工厂模式,就是用一个单独的类来做实例化对象的过程,这就是工厂,来,让我们看看工厂类怎么写。
OperationFactory 简单的运算工厂类
public class OperationFactory { public Operation createOperation(String optrate){ Operation operation = null; switch (optrate) { case "+": operation = new OperationAdd(); break; case "-": operation = new OperationSubtract(); break; case "*": operation = new OperationMultiply(); break; case "/": operation = new OperationDivide(); break; default: break; } return operation; } }
这样子,只需要输入运算符号,工厂就会实例化出合适的对象,通过多态,返回父类的方法实现了计算器的结果。
最后写一个Main方法实现计算功能
public class Main { public static void main(String[] args) { OperationFactory operationFactory = new OperationFactory(); Operation operation = operationFactory.createOperation("*"); operation.setNumberA(new BigDecimal("10")); operation.setNumberB(new BigDecimal("0.0058")); BigDecimal result = operation.getResult(); System.out.println(result); } }
如果以后需要更改加法运算,只需要改OperationAdd这个类就可以,需要添加各种复杂的运算,只需要添加相应的运算子类就可以,然后在修改运算类工厂,在switch中添加分支。
这样一个简单的工厂模式就实现了,这里面用到了面向对象的三大特征:封装一个抽象的运算父类,所以的算法类全部继承父类,通过算法工厂,多态的实例化出合适的对象。
相关文章推荐
- 简单的工厂模式(参考于大话设计模式)
- 大话设计模式之简单工厂模式
- 读书笔记系列1:大话设计模式 -- 简单工厂模式
- 大话设计模式---简单工厂模式
- 大话设计模式(C++实现)--简单工厂模式
- 《大话设计模式》读书笔记-第1章 简单工厂模式
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式
- 大话设计模式 第一章 简单工厂模式
- 大话设计模式 第1章 代码无错就是优? 简单工厂模式
- 大话设计模式-简单工厂模式
- 大话设计模式-第1章代码无错就是优?-简单的工厂模式
- 大话设计模式:第一章简单工厂模式
- 大话设计模式--简单工厂模式
- 大话设计模式中简单工厂模式和策略模式的商场收银软件实例的C++代码
- 大话设计模式-策略模式与简单工厂模式
- 大话设计模式-简单工厂模式
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式
- <一>读<<大话设计模式>>之简单工厂模式
- 大话设计模式1 简单工厂模式 的java代码实现