代码改变世界

[原创]抽象工厂模式

2007-07-27 12:39  Virus-BeautyCode  阅读(339)  评论(0编辑  收藏  举报

    我们经常需要创建一系列相互依赖的对象,需要使用很多次的new,我们要使用一种封装机制来避免这些。

提供一个创建一系列相关或者相互依赖对象的接口,无需指定他们具体的类。

客户通过抽象工厂和抽象产品来创建对象。

客户角色仅仅依赖抽象类,不必理解具体的业务规则。

系统中增加业务规则类不是模式所能解决的事情,无论采用什么模式,业务规则类都是需要添加的,即增加了新系列的产品。

string factoryName=ConfigurationSettings.AppSettings["factoryName"];


instance=(AbstractFactory)Assembly.Load(factoryName).CreateInstance(factoryName);

抽象工厂将产品对象的创建延迟到他的具体工厂的子类,引进新产品的情况下,我们不需要修改工厂类,而只是增加新的产品类和新的工厂类(这是任何时候都不可避免的),这样很好的符合了开放封闭原则。