.Net设计模式_工厂模式(2)

2、工厂方法模式

引言:

上一篇中我们描述了简单工厂的缺点,而解决方法就是把工厂接口化,把工厂的行为标准化,这就是工厂方法模式。

理解:

工厂能制造A和B鞋,如果消费者现在要求制造C鞋、D鞋...咋办?傻办法是,新建一个C鞋类、D鞋类....(这个没有影响原来的代码),

然后修改工厂类,每次消费者有要求,工厂就停产修改。(这个商人肯定要亏本)商人不干了,要亏本亏死了。

问题出在工厂类。

所以,我们需要修改工厂类,把工厂提炼成一个接口,定义通用的行为,新的商品实现新商品工厂,来完成生产,原来的生产不会受影响。

(这里我们可理解成,代码的可扩展性好)

代码示例:

我们需要生产笔去写我们的信:

public interface IPen
{
void Write();
} public class APen : IPen
{
public void Write()
{
Console.WriteLine("A Pen");
}
} public class BPen : IPen
{
    public void Write()
    {
        Console.WriteLine("B Pen");
    }
}

定义不同的笔厂:

public interface IFactory
{
IPen CreatePen();
} public class APenFactory : IFactory
{
public IPen CreatePen()
{
return new APen();
}
} public class BPenFactory : IFactory
{
public IPen CreatePen()
{
return new BPen();
}
}

消费者要笔:

static void Main(string[] args)
{
IFactory penFactory = new BPenFactory();
IPen pen = penFactory.CreatePen();
pen.Write();
Console.ReadKey();
}

这样如果有新的笔,C笔需要生产的话,就只要新建一个类CPen.cs(继承IPen),然后再新建一个CPen的工厂类CPenFactory.cs(继承IFactory),用户就可以买到CPen了,我们就不用工厂停产修改了。(这里体现的是,代码的可扩展性和可维护性)。

图解:(出之http://www.cnblogs.com/zhenyulu/articles/36590.html

.Net设计模式_工厂模式(2)

总结:

优点,工厂方法模式使代码的可扩展性变的非常的话。

缺点,好像没有,可以说为缺点的话,就是代码变多了。

下一篇是抽象工厂的梳理。

上一篇:发一个自己写的php框架


下一篇:HDFS存在大量小文件问题的解决方案