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

  • 相关阅读:
    分工的好处
    这是真正的随笔,无论形式还是内容。。。
    javascript 检查函数传入的实参个数和期待的形参个数是否相同的方法
    JS中比较难记的函数
    3.0 Basic Usage of Class
    0.0 Visual Studio
    2.0 Exercise of Basic Statements
    5.0 String And RegularExpressions.
    1.0 HelloWorld
    dell mini9 fluxbox 声卡的安装 和 屏幕分辨率和刷新率的调节
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5055776.html
Copyright © 2011-2022 走看看