简单工厂模式(SimpleFactory Pattern)

一、简单工厂模式简介

  简单工厂模式根据提供的数据返回几个可能的类中的一个实例。通常其返回的所有的类都有一个共同的父类和一些黄同的方法,不过这些类中的每个都完成不同的任务,以及针对不同类型的数据做了优化。简单工厂并不是不23个Gof( Gang of Four)模式中的一个,其在这里只不过是作为我们稍后会讨论到的工厂方法(Factory Method)这Gof模式的一个入门而已。

二、解决问题

  简单工厂的目的在于解决客户于对象间的直接依赖的关系,把他们之间的紧耦合进行解耦,客户实例化对象时不需要关心该对象是由哪个子类实例化的。

三、UML

  

四、代码分

People

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleFactory
{
/// <summary>
/// 人的抽象类
/// </summary>
public abstract class People
{
public abstract string GetSex();
}
/// <summary>
/// 男人
/// </summary>
public class ManPeople:People
{

public override string GetSex()
{
return "Man";
}
}
/// <summary>
/// 女人
/// </summary>
public class WomanPeople : People
{
public override string GetSex()
{
return "Woman";
}
}

}

 

SimpleFactory

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

namespace SimpleFactory
{
public class SimpleFactory
{

/// <summary>
/// 简单工厂类
/// </summary>
/// <param name="people">人的标志</param>
/// <returns>返回具体人</returns>
public static People CreatePeople(string people)
{
People p = null;
switch (people)
{
case "M": p = new ManPeople(); break;
case "W": p = new WomanPeople(); break;
}
return p;
}

}
}

Program

 class Program
{
static void Main(string[] args)
{
People man = SimpleFactory.CreatePeople("M");
Console.WriteLine(man.GetSex());


People woman = SimpleFactory.CreatePeople("W");
Console.WriteLine(woman.GetSex());

Console.Read();
}
}

运行结果:
Man
Woman

posted @ 2012-04-05 14:11  ヾJ﹍Hヾ  阅读(207)  评论(0编辑  收藏  举报