zoukankan      html  css  js  c++  java
  • 简单工厂模式

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

  • 相关阅读:
    使用srvany.exe将任何程序作为Windows服务运行
    instsrv.exe用法
    在博客园中发现的一篇文章,感觉这些内容就是我心中所想表达的!
    HTML5的Video标签的属性,方法和事件汇总
    使用nodejs 来压缩整个目录
    git 基础
    mac 上安装 redis
    第12次实验总结
    第12次实验作业
    第十一次实验总结
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5055776.html
Copyright © 2011-2022 走看看