zoukankan      html  css  js  c++  java
  • 【设计模式】学习笔记——简单工厂模式

    版权声明:本文出自胖喵~的博客,转载必须注明出处。

       转载请注明出处:http://www.cnblogs.com/by-dream/p/5463488.html

      从接触编程到现在已经很久了,从最早的面向过程到面向对象,后来算法的学习,但是一直没有接触设计模式。前几周,我申请的《大话设计模式》采购下来了,刚好借着这个读书的机会,把自己的学习笔记记录下来,希望以后自己写项目的时候可以应用到这些模式思想。

      参考书中的例子,我是用Java来实现的。目录结构如下:

      1、运算的基类,所有的运算都必须继承自这个类

    /**
     * 基类,所有方法的计算类都要继承自这个类 
     * 
     * */
    public class Operation
    {
        private double m_numberA = 0;
        private double m_numberB = 0;
        
        public double getNumberA() {
            return m_numberA;
        }
        public double getNumberB() {
            return m_numberB;
        }
        
        public void setNumberA(double numberA) {
            this.m_numberA = numberA;
        }
        public void setNumberB(double numberB) {
            this.m_numberB = numberB;
        }
        
        /** 子类重写该方法即可 */
        public  double  GetResult() {
            double result = 0;
            return result;
        }
    }

      

      2、具体实现方法的类。

        实现加法类:

    /**
     *     加法类
     * 
     * */
    public class OperationAdd extends Operation
    {
        public  double  GetResult() {
            double result = 0;
            result = getNumberA() + getNumberB();
            return result;
        }
    }

        实现减法类:

    /**
     *     减法类
     * 
     * */
    public class OperationSub extends Operation
    {
        public  double  GetResult() {
            double result = 0;
            result = getNumberA() - getNumberB();
            return result;
        }
    }

      3、实现工厂类,工场相当于生产出不同的计算类

    /**
     * 工厂类 
     * 
     * */
    public class OperationFactory
    {
        public static Operation createOperation(String operate) {
            Operation oper = null;
            switch (operate)
            {
            case "+":
                oper = new OperationAdd();            
                break;
            case "-":
                oper = new OperationSub();
                break;
            }
            return oper;
        }
    }

      4、上层使用:

    public class test
    {
    
        public static void main(String[] args) {
    
            Operation oper = null;
            oper = OperationFactory.createOperation("+");
            oper.setNumberA(1);
            oper.setNumberB(2);
            double res = oper.GetResult();
    
            System.out.println(res);
            
            Operation oper2 = null;
            oper2 = OperationFactory.createOperation("-");
            oper2.setNumberA(1);
            oper2.setNumberB(2);
            double res2 = oper2.GetResult();
    
            System.out.println(res2);
        }
    }

        使用工厂类来创造出基类的对象,然后调用基类的set输入值,然后再调用get得到值。

      

      5、运行的结果: 

        

      

  • 相关阅读:
    ArcEngine 图层渲染(转)
    新年快乐!
    js限制输入(转载)
    ArcEngine中使用上下左右键移动地图
    ArcEngine 渲染的使用
    Geometry 对象浅析
    AE数据加载
    基于arcgis server地图页面设计备忘
    AO中的一些基础类和接口
    ArcGIS Server 9.2数据加载
  • 原文地址:https://www.cnblogs.com/by-dream/p/5463488.html
Copyright © 2011-2022 走看看