设计模式C#描述——工厂方法模式

原创 2007年10月01日 14:22:00
工厂方法模式是类的创建模式,又叫做虚拟构造子模式或多态性工厂模式。它的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
简单工厂模式的缺点:
由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。
工厂方法模式的优点:
在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将创建的工作交给子类去做。这个核心类成为一个抽象工厂的角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类实例化的细节。这使得工厂方法模式可以允许系统在不修改具体工厂角色的情况下引进新的产品,使其具有超越简单工厂模式的优越性。
 
以下面情况为例讨论该模式的具体实现:
抽象工厂角色(Creator):担任工厂方法模式的核心,规定创建对象的工厂类应该实现的接口
具体工厂角色(ConcereteCreator):负责具体产品对象的创建,实现Creator规定的接口。
抽象产品角色(Product):工厂方法模式所创建对象的超类型,规定产品应具有的接口。
具体产品角色(ConcreteProduct):实现Product所规定的接口。
示例代码如下:
Creator:
public interface Creator
     {
          Product factory();//工厂方法
     }
 
ConcreteCreator1:
 class ConcreteCreator1:Creator
     {
         public Product factory()//工厂方法
         {
              return new ConcreteProduct1();
         }
     }
 
ConcreteCreator2:
     class ConcreteCreator2:Creator
     {
         public Product factory()//工厂方法
         {
              return new ConcreteProduct2();
         }
     }
 
Product:
public interface Product
     {
        
     }
 
ConcreteProduct1:
class ConcreteProduct1:Product
     {
         public ConcreteProduct1()
         {
              Console.WriteLine ("Creat ConcreteProduct1");
         }
          
     }
 
ConcreteProduct2:
     class ConcreteProduct2:Product
     {
         public ConcreteProduct2()
         {
              Console.WriteLine ("Creat ConcreteProduct2");
         }
          
     }
 
Client:
class Client
     {
         private static Creator creator1,creator2;
         private static Product product1,product2;
         [STAThread]
         static void Main(string[] args)
         {
              creator1=new ConcreteCreator1 ();
              product1=creator1.factory();
              creator2=new ConcreteCreator2 ();
              product2=creator2.factory();
         }
     }
 

相关文章推荐

设计模式——工厂方法模式

  • 2013年08月10日 15:56
  • 8KB
  • 下载

C#设计模式——工厂方法模式(Factory Method Pattern)

一、概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?如何提供一种封装机制来隔离出“这个易变...
  • guozh
  • guozh
  • 2012年03月25日 19:50
  • 576

C#设计模式——工厂方法模式(Factory Method)

一、引言   在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模...

C#设计模式之2——工厂方法模式

上一个设计模式连接: http://blog.csdn.net/weixingstudio/article/details/7234423 这个CSDN的编辑器不是很好用,不知道为什么插入代码以...

C#设计模式(3)——工厂方法模式

一、引言   在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方...

C#设计模式-工厂方法模式

  • 2017年02月18日 10:59
  • 32KB
  • 下载

【C# 设计模式-工厂方法模式】

在上一篇博文【C#设计模式-简单工厂模式】中,我们使用简单工厂模式实现了: 如果有一个住户管理系统,里面的住户类型是可变的,每一种租户类型的租金计算公式都存在差异 例如:A类型的住户租金额=天数*单...

C#设计模式--工厂方法模式

设计模式: 工厂方法模式(Factory Method Pattern) 介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用到的类,做运算。而工厂方法模式...

C#设计模式之工厂方法模式(Factory Method Pattern)

装饰模式解释:         工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式C#描述——工厂方法模式
举报原因:
原因补充:

(最多只允许输入30个字)