您的位置:首页 > 其它

大话设计模式-简单工厂模式(学习笔记)

2014-03-05 21:32 246 查看
此篇为学习设计模式-简单工厂模式(教材为:大话设计模式,同时很感谢作者,本书对自己帮助很大。)过程中的一些源代码、笔记和感悟,如有理解不到位或者错误之处,敬请指教。


简单工厂模式实例:计算器



设计思想

1.建立一个运算类(operation)

其中有a、b以及对a、b的赋值属性

并创建一个可以返回结果的函数(默认值可以为0,其后可以进行重构)

public class Operation

{

private double _numberA=0;

private
double _numberA=0;

//通过对NumberA、B赋值达到对_numberA、B赋值的目的

public double NumberA

{

set{ _numberA=value; }

get{ return _numberA; }

}

public double NumberB

{

set{ _numberB=value; }

get{ return _numberB; }

}

//返回结果值

public virtual double GetResult()

{

double result=0;

return result;

}

}

2.创建具体的运算类(如:加减乘除)继承运算类

//加法类

class OperationAdd:Operation

{

public override double GetResult()

{

double result = 0;

result = NumberA+NumberB;

return result

}

}

//减法类

...

...

3. 建立简单工厂类

主要功能:根据不同的操作符实例化不同的具体运算类并返回。(主要思想:继承)

public class OperationFactory

{

public static Operation createOperate(string operate)

{

Operation oper = null;

switch(operate)

{

case "+":

oper = new OperationAdd();

break;

case "-":

oper = new OperationSub();

break;

....

....

}

return oper;

}

}

4.客户端代码

主要实现声明运算类,并利用工厂类进行具体的运算类声明,设置运算数值,并通过GetResult方法返回结果

Operation oper;

oper = OperationFactory.createOperate("+");

oper.NumberA=1;

oper.NumberB=2;

double result = oper.GetResult();

小结:简单工厂类实现了客户端对具体运算类的实例化,用户不需要关心工厂类的具体操作,只需要按照相同的方法传入不同的值进行实例,并通过方法得到结果。实现了运算类,工厂类各自分工以及客户端的分离。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: