创建型模式之简单工厂模式
简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。
一般涉及到三种角色:
工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
一般涉及到三种角色:
工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。
public void eat()
{
System.Windows.Forms.MessageBox.Show("狼吞虎咽...");
}
public void eat()
{
System.Windows.Forms.MessageBox.Show("细嚼慢咽...");
}
}
}
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();
以为例讨论该模式的具体实现:
Person 人接口,规定人具有的一些共同特性
Man 男人类,派生自Person接口
Women 女人类,派生自Person接口
GodToCreate 上帝造人类,负责男人和女人的创建工作。
Person.cs
using System;
Person.cs
using System;
namespace WindowsApplication5
{
{
public interface Person
{
void eat();//吃饭
void drink();//喝水
}
}
Man.cs
using System;
{
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("咕咚咕咚...");
}
{
System.Windows.Forms.MessageBox.Show("咕咚咕咚...");
}
#endregion
}
}
Women.cs
using System;
}
}
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("用鼻子先闻了闻...");
}
{
System.Windows.Forms.MessageBox.Show("用鼻子先闻了闻...");
}
#endregion
}
}
GodToCreate.cs
using System;
}
}
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;
}
{
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();
}
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。
one.eat();
one.drink();
}
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。