C# 设计模式 之 工厂方法

原创 2007年09月23日 00:13:00

 

    为了对一个类进行实例化,通常使用这个类的构成函数,但是有时候出现这类情况:几个类实现了同一个接口,具有同样的操作、返回了同样的抽象类型,不知道该为哪个类型创建对象,因为需要根据条件来控制对哪个类进行实例化,并且此时类的数量可能增减,接口却是稳定的。我们需要工厂方法模式!
   

       我们遇见一个.NET中的经典实例就是枚举器。Enumerator的 GetEnumerator()的方法是一个用了工厂方法模式的例子。这个方法将调用者与需要进行实例化的类隔离开来了。

       需要指出的是并不是能够创建并返回一个对象的方法都是工厂方法。工厂方法模式需要包括一个方法,这个方法创建并返回一个对象,同时客户无需要了解应该具体去实例化哪个类。

      我们再看另外一个例子:  

using System;
using System.Collections.Generic;
using System.Text;

namespace FactoryMethod
{
    
/// <summary>
    
/// 机器
    
/// </summary>

    public abstract class Machine
    
{
        
public abstract void Print();
    }


    
///<summary>
    
/// 打印机
    
/// </summary>

    public class Printer : Machine
    
{
        
public override void Print()
        
{
            Console.WriteLine(
"Printer");
        }

    }


    
///<summary>
    
/// 复印机
    
/// </summary>

    public class Copycat : Machine
    
{
        
public override void Print()
        
{
            Console.WriteLine(
"Copycat");
        }

    }


    
/// <summary>
    
/// MachineFactory 类
    
/// </summary>

    public abstract class MachineFactory
    
{
        
public abstract Machine Create();
    }


    
/// <summary>
    
/// PrinterFactory 类
    
/// </summary>

    public class PrinterFactory : MachineFactory
    
{
        
public override Machine Create()
        
{
            
return new Printer();
        }

    }


    
/// <summary>
    
/// CopycatFactory 类
    
/// </summary>

    public class CopycatFactory : MachineFactory
    
{
        
public override Machine Create()
        
{
            
return new Copycat();
        }

    }


    
class Program
    
{
        
static void Main(string[] args)
        
{
            MachineFactory factory 
= null;
            
//根据条件判断创建哪个对象
            bool conditon = true;
            
if (conditon)
            
{
                factory 
= new PrinterFactory();
            }

            
else
            
{
                factory 
= new CopycatFactory();
            }

            Machine machine 
= factory.Create();
            machine.Print();
            Console.ReadLine();
        }

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c#设计模式- Factory Method模式(工厂方法)

参考文章   http://www.cnblogs.com/zhenyulu/articles/36590.html   http://wenku.baidu.com/view/e9b3a36...

设计模式之工厂方法

  • 2014-08-17 18:34
  • 87KB
  • 下载

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

定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法(Factory Method)使一个类的实例化延迟到其子类。也叫虚构造器(Virtual Constructor) 结构 理解1. ...

工厂方法设计模式

  • 2012-08-10 23:00
  • 182KB
  • 下载

结合Android学设计模式--工厂方法(FactoryMethod)

简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式中包含的角色及其职责 1.工厂(Creator)...

Java设计模式-工厂方法

设计模式之工厂方法

工厂方法设计模式

工厂方法设计模式...简约而且简单
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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