您的位置:首页 > 其它

设计模式学习笔记四:工厂方法(Factory Method)

2008-06-08 10:56 796 查看
1.概述

在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。

工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化那个类。工厂方法使一个类的实例化延迟到其子类。这个借口所指的是一个抽象方法,该方法说明需要创建一个对象,但并不给出具体的的创建方法和创建什么类型的对象。

工厂方法的使用场合:当一个类不知道他所必须创建对象的类或一个类希望由子类来指定他所创建的对象时,可以使用工厂方法。

工厂方法模式结构图:

public abstract class Operation

public class OperationAdd : Operation

public class OperationMul : Operation

public class OprationSub : Operation

public abstract class OperationFactory

public class AddFactory : OperationFactory

public class MulFactory : OperationFactory

public class SubFactory : OperationFactory

static void Main(string[] args)

{

OperationFactory operFactory = new AddFactory();

Operation oper = operFactory.CreateOpreation();

oper.NumbleA = 5;

oper.NumbleB = 4;

double result = oper.GetResult();

Console.WriteLine("结果:{0}",result);

Console.ReadLine();

}
3.总结

工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了"开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。工厂方法模式退化后可以演变成简单工厂模式。工厂方法模式退化后可以演变成简单工厂模式。

适用于工厂方法模式: 当一个类不知道它所必须创建的对象的类的时候;当一个类希望由它的子类来指定它所创建的对象的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

工厂方法克服了简单工厂违背开放封闭原则的缺点,又保持了分装对象创建过程的优点,工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了他的缺点。缺点就是由于每增加一个产品,就需要加一个产品工厂类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: