创建型模式之简单工厂模式

简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。

一般涉及到三种角色:
    工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
    抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
    具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。

以为例讨论该模式的具体实现:
    Person 人接口,规定人具有的一些共同特性
    Man 男人类,派生自Person接口
    Women 女人类,派生自Person接口
    GodToCreate 上帝造人类,负责男人和女人的创建工作。

Person.cs
using System;
namespace WindowsApplication5
{
 public interface Person
 {
  void eat();//吃饭
  void drink();//喝水
 }
}

Man.cs
using System;
namespace WindowsApplication5
{
 public class Man:Person
 {
  #region Person Members

  public void eat()
  {
   System.Windows.Forms.MessageBox.Show("狼吞虎咽...");
  }
  public void drink()
  {
   System.Windows.Forms.MessageBox.Show("咕咚咕咚...");
  }
  #endregion
 }
}

Women.cs
using System;
namespace WindowsApplication5
{
 public class Women:Person
 {
  #region Person Members

  public void eat()
  {
   System.Windows.Forms.MessageBox.Show("细嚼慢咽...");
  }
  public void drink()
  {
   System.Windows.Forms.MessageBox.Show("用鼻子先闻了闻...");
  }
  #endregion
 }
}

GodToCreate.cs
using System;
namespace WindowsApplication5
{
 public class GodToCreate
 {
  public static Person factory(int which)
  {
   if(which.Equals(0))
    return new Man();
   else if(which.Equals(1))
    return new Women();
   else
    return null;
         }

 }
}

On client, to test it as following:
private void button1_Click(object sender, System.EventArgs e)
  {
   Person one = GodToCreate.factory(1);
   one.eat();
   one.drink();
   one = GodToCreate.factory(0);
   one.eat();
   one.drink();
  }



模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。
posted @ 2005-07-27 14:26  Ready!  阅读(1700)  评论(8编辑  收藏  举报