您的位置:首页 > 其它

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

2016-05-05 21:46 393 查看
版权声明:本文出自胖喵~的博客,转载必须注明出处。

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

    


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: