【设计模式】学习笔记——简单工厂模式
◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
转载请注明出处: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、运行的结果: