您的位置:首页 > 编程语言 > C#

简单工厂模式(Simple Factory Method Pattern)

2017-05-06 12:54 330 查看
图示原理



【注释】从图中可以看出,客户是与工厂打交道的,指示工厂生产某类产品,然后工厂生产出产品,客户统一以父类产品类对象的形式得到,从而使客户与具体产品的创建毫不相关。

各类解释

工厂类:担任这个角色的是工厂方法模式的核心。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。

抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。

具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。

范例

namespace ConsoleApplicationDemo
{
public interface IApparel
{
string ShowMe();
}
public class ApparelFactory
{
public IApparel CreateApparel(string apptype)
{
switch (apptype)
{
case "DRESSSHIRT":
return new DressShirt();
case "SPORTSSHIRT":
return new SportShirt();
}
return null;
}
}
public class DressShirt : IApparel
{
public string ShowMe()
{
return ("Dress Shirt");
}
}
public class SportShirt : IApparel
{
public string ShowMe()
{
return ("Sports Shirt");
}
}

class Program
{
static void Main(string[] args)
{
//生成工厂对象
ApparelFactory factory = new ApparelFactory();
//客户直接给工厂指示,生成想要的产品,以统一的父类产品形式提取
IApparel obj1 = factory.CreateApparel("DRESSSHIRT");
IApparel obj2 = factory.CreateApparel("SPORTSSHIRT");
string shirtType = obj1.ShowMe();
Console.WriteLine(shirtType);
}
}
}


效果图



简单工厂模式的优缺点

优点:

1.模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。

2.客户只需指示工厂创建哪个对象。

缺点:

1.由于工厂类集中了所有产品创建逻辑,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。 总之,就是关键部分的代码最好不轻易随需求产生变更,而简单工厂模式并没有做到这一点,所以抽象工厂模式(Abstract Factory Method Pattern)产生了-^^-。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息