大话设计模式-简单工厂模式(学习笔记)
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();
小结:简单工厂类实现了客户端对具体运算类的实例化,用户不需要关心工厂类的具体操作,只需要按照相同的方法传入不同的值进行实例,并通过方法得到结果。实现了运算类,工厂类各自分工以及客户端的分离。
简单工厂模式实例:计算器
设计思想
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();
小结:简单工厂类实现了客户端对具体运算类的实例化,用户不需要关心工厂类的具体操作,只需要按照相同的方法传入不同的值进行实例,并通过方法得到结果。实现了运算类,工厂类各自分工以及客户端的分离。
相关文章推荐
- 大话设计模式-简单工厂模式(学习笔记与java实现)
- 《大话设计模式》笔记-模式0 简单工厂模式
- 计算器之简单工厂模式学习笔记[C++版]
- 简单工厂模式、工厂模式、抽象工厂模式(学习笔记)
- 大话设计模式-模板模式(学习笔记)
- 设计模式学习笔记 简单工厂模式
- 大话设计模式学习(一)——简单工厂模式
- 设计模式学习笔记-简单工厂模式
- 【设计模式】学习笔记之简单工厂模式
- 再起航,我的学习笔记之JavaScript设计模式05(简单工厂模式)
- 大话模式学习笔记-代码无错就是优?-简单工厂模式
- 设计模式学习笔记-简单工厂模式
- 大话设计模式之观察者模式--学习笔记
- Java学习笔记---设计模式之简单工厂模式
- Android设计模式学习笔记(简单工厂模式)
- 设计模式学习笔记--简单工厂模式
- 设计模式学习笔记(2)——简单工厂模式
- C++学习笔记(二十八)工厂模式、简单工厂模式与抽象工厂模式
- 设计模式学习笔记一:Simple factory pattern,简单工厂模式
- 《大话设计模式》——学习笔记之面向对象原则&UML类图