【设计模式】学习笔记——简单工厂模式

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

   转载请注明出处: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、运行的结果: 

    

  

原文地址:https://www.cnblogs.com/by-dream/p/5463488.html