Lose.zhang 发表于 2013-1-6 02:21:30

说说设计模式~工厂方法模式

<div id="cnblogs_post_body">在简单工厂的讲解中,出现了很多问题,我们对象统一行为抽象出一个接口(或者抽象类)之后,再根据你传入的类型进行创建实例,这只适合于你有固定行为的场合,当你要实现接口的类型处于不定数时,则不适合使用简单工厂模式,而应该用工厂方法了。
适用场合:

子类有统一的操作行为
子类的数量不固定,随时可能有新的功能子类出现
工厂方法优势:

子类与子类是并列的,关系不精密,程序耦合度比较大
完全符合OCP原则,对代码的修改关闭,对代码的扩展开放
创建具体对象方法灵活,可以使用反射或者第三方IOC容器
工厂方法模式代码片断,主要从简单工厂中修改过来的,下面是结果图

http://www.agoit.com/bbs/data:image/png;base64,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
1 统一操作行为,主要将统一接口抽象出来,让具体子类去实现它
<div class="cnblogs_code">1         /// <summary>2         /// 工厂方法的规定操作行为3         /// </summary>4         public interface ICreate5       {6             void Create();7         }
页: [1]
查看完整版本: 说说设计模式~工厂方法模式