设计模式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();
         }
     }
 

设计模式(一) 工厂模式 五种写法总结

转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52703280本文出自:【张旭童的博客】系列开篇瞎BB设计模式相关的文章学习与总结,一...
  • zxt0601
  • zxt0601
  • 2016年10月12日 16:47
  • 10108

创建型模式之工厂方法模式(日志记录器)

类图 package cn.factory2; public class Client { public static void main(String[] args) { try { ...
  • zenglinshan
  • zenglinshan
  • 2015年11月04日 15:38
  • 1230

java设计模式(1)-------单例,工厂,值对象,装饰模式

java设计模式
  • u011459262
  • u011459262
  • 2015年08月20日 00:10
  • 2921

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

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

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

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

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

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

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

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

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

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

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

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

C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

  • 2008年09月13日 15:52
  • 8.46MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式C#描述——工厂方法模式
举报原因:
原因补充:

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