您的位置:首页 > 其它

简单工厂模式

2015-12-18 00:15 295 查看
/**
*
* @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;
}
}
OperationAdd,OperationSub,OperationMul,OperationDiv分别是实现类

举例子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);
}
}
详细代码请参考我的git:https://github.com/wzyxidian/DesignModel.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: