一、工厂方法模式简介(Brief Introduction)
工厂方法模式(
Factory Method Pattern
),定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类中。
二、解决的问题(What To Solve)
工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放
-
封闭原则。工厂方法使一个类的实例化延迟到其子类中。
三、工厂方法模式分析(Analysis)
1、工厂方法模式结构
Product
抽象类
,定义工厂方法所创建的对象接口。
ConcreteProduct
实现类
,具体的产品,实现
Product
接口。
Factory
抽象类
,声明工厂方法,该方法返回一个
Product
类型的对象。
ConcreteFactory
类
,抽象工厂类
Factory
的具体实现,返回一个
ConcreteProduct
实例
四.实例分析(Example)
1、场景
一个简单计算器,具有简单的加操作和减操作。
结构
如下图所示
Factory:
抽象工厂方法类
.
AddFactory:
加法工厂
SubFactory,
减法工厂
.
Operation:
抽象操作类
AddOperation:
加法操作
SubOperation:
减法操作
2、代码
1
、
抽象操作类
Operation
,
及其具体实现类AddOperation、SubOperation
|
///
<summary>
///
抽象操作类
///
</summary>
public
abstract class Operation
{
public int
numberA;
public int
numberB;
public abstract int
GetResult();
}
///
<summary>
///
加法操作
///
</summary>
public
class AddOperation
: Operation
{
public override int
GetResult()
{
return
(this
.numberA + this
.numberB);
}
}
///
<summary>
///
减法操作
///
</summary>
public
class SubOperation
: Operation
{
public override int
GetResult()
{
return
(this
.numberA - this
.numberB);
}
}
|
2
、抽象工厂类
Factory
及其具体工厂类
AddFactory
、
SubFactory
|
public
abstract class Factory
{
public abstract Operation
CreateOperation();
}
public
class AddFactory
: Factory
{
public override Operation
CreateOperation()
{
return new AddOperation
();
}
}
public
class SubFactory
:Factory
{
public override Operation
CreateOperation()
{
return new SubOperation
();
}
}
|
3
、客户端代码
|
static
void
{
Console
.WriteLine("
使用工厂方法进行计算"
);
Factory
factory1 = new AddFactory
();
Operation
operation1= factory1.CreateOperation();
operation1.numberA = 10;
operation1.numberB = 20;
Console
.WriteLine("{0}+{1}={2}"
, operation1.numberA, operation1.numberB, operation1.GetResult());
Factory
factory2 = new SubFactory
();
Operation
operation2 = factory2.CreateOperation();
operation2.numberA = 10;
operation2.numberB = 20;
Console
.WriteLine("{0}+{1}={2}"
, operation2.numberA, operation2.numberB, operation2.GetResult());
Console
.Read();
}
|
3、实例运行结果
五、总结(Summary)
本文对工厂方法模式(
Factory Method Pattern
)的概念及其设计结构图简单地进行了描述,同样也以一个计算器的实例进行了说明
,
工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放
-
封闭原则
.
本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/259703,如需转载请自行联系原作者