码迷,mamicode.com
首页 > 其他好文 > 详细

简单工厂模式

时间:2015-12-18 06:30:23      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:

/**
 *
 * @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

 

简单工厂模式

标签:

原文地址:http://www.cnblogs.com/wzyxidian/p/5055776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!