简单工厂模式
2015-12-18 00:15
295 查看
/**
*
* @author zhiyong wang
* 简单工厂模式:
* 例子:计算器
* 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。
*
*/
UML类图
结构图:
Operation是抽象类,父类:
OperationAdd,OperationSub,OperationMul,OperationDiv分别是实现类
举例子OperationDiv
ClietnOperate是客户端出发类
详细代码请参考我的git:https://github.com/wzyxidian/DesignModel.git
*
* @author zhiyong wang
* 简单工厂模式:
* 例子:计算器
* 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。
*
*/
UML类图
结构图:
Operation是抽象类,父类:
package cn.edu.xidian.sse.simplefactory; /** * * @author zhiyong wang * 构建父类,操作类,定义字段与属性,(字段是私有的,属性时共有的) * 编写用于多态的公共方法 */ public abstract class Operation{ private double numberA; private double numberB; public double getNumberA(){ return this.numberA; } public void setNumberA(double numberA){ this.numberA = numberA; } public double getNumberB(){ return this.numberB; } public void setNumberB(double numberB){ this.numberB = numberB; } public double getResult(){ double result = 0.0; return result; } } |
举例子OperationDiv
package cn.edu.xidian.sse.simplefactory; /** * * @author zhiyong wang * 继承了父类的除子类实现类, * 实现了继承,多态的方法,同时将操作封装到具体的类中 * */ public class OperationDiv extends Operation{ public double getResutl(){ double result = 0.0; if(getNumberB() != 0) result = getNumberA() / getNumberB(); return result; } } |
ClietnOperate是客户端出发类
package cn.edu.xidian.sse.simplefactory; /** * * * @author zhiyong wang * 简单工厂模式: * 例子:计算器 * 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 * * * 客户端操作类,通过工厂创建出一个实际的实现类来执行具体的操作 , * 如果只是切换四种操作,之用更改客户端就可以 * 如果要增加一种操作,就要在新建这种操作的实现类,并在工厂中加以生产 * */ public class ClientOperate { public double operate(String operate, double numberA, double numberB){ Operation oper = OperationFactory.createOperation(operate); oper.setNumberA(numberA); oper.setNumberB(numberB); return oper.getResult(); } public static void main(String[] args) { ClientOperate co = new ClientOperate(); co.operate("+", 1.2, 2.9); } } |
相关文章推荐
- 流量分析
- 关键字break代码优化片段
- try catch finally 和 return 解析
- java中String,StringBuffer,StringBuilder之间的区别
- vim基础学习之自动补全功能
- 国内外开源与 SaaS ,团队协作平台、项目管理工具整理
- 使用Handler类来更新UI
- Masonry自动布局使用
- 设备模型的基础---kobject,kset
- 蘑菇街 私有云Docker实例应用
- 使用Python编写简单的端口扫描器的实例分享
- PHP封装的字符串加密解密函数
- 详解 PHP加密解密字符串函数附源码下载
- 解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
- WordPress中用于获取文章信息以及分类链接的函数用法
- 详解WordPress中用于合成数组的wp_parse_args()函数
- WordPress中用于更新伪静态规则的PHP代码实例讲解
- 详解WordPress中给链接添加查询字符串的方法
- 讲解WordPress开发中一些常用的debug技巧
- WordPress中注册菜单与调用菜单的方法详解