首页 > Web开发 > 详细

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

时间:2014-01-14 21:32:50      阅读:453      评论:0      收藏:0      [点我收藏+]

工厂模式有三个模式:

  • 简单工厂(Simple Factory)模式 
  • 工厂方法(Factory Method)模式 
  • 抽象工厂(Abstract Factory)模式

 

1、简单工厂

引言:

我是消费者,我需要一双鞋,我要自己建造。我受不了这个,因为我不知道如何制造鞋。

消费者要求,鞋厂,于是有了工厂,帮助消费者制造鞋。(第一个做工厂人,都是商业头脑发达之人啊)

 

理解:

有了工厂就好办了,告诉工厂,我要鞋,那么工厂就会给你鞋吗?

还不行,因为鞋有好多种,雨鞋、跑鞋、休闲鞋等,目标太广,无法确认,需要其他详细信息。

那么你告诉鞋厂,要雨鞋,鞋厂就会为你生产一双雨鞋。

代码示例:

bubuko.com,布布扣
public class AShoes
{
    public void Run()
    {
        System.Console.WriteLine("A Run");
    }
}
bubuko.com,布布扣
bubuko.com,布布扣
public class BShoes
{
    public void Run2()
    {
        System.Console.WriteLine("B Run");
    }
}
bubuko.com,布布扣
bubuko.com,布布扣
public class ShoesFactory
{
    public AShoes CreateAShoes()
    {
        return new AShoes();
    }

    public BShoes CreateBShoes()
    {
        return new BShoes();
    }
}
bubuko.com,布布扣
bubuko.com,布布扣
static void Main(string[] args)
{
    ShoesFactory factory = new ShoesFactory();
    AShoes shoes = factory.CreateAShoes();
    shoes.Run();
    Console.ReadKey();
}
bubuko.com,布布扣

上面这种模式没有把鞋这种商品写成接口,那么就有一个问题,商品的行为不统一了,如:A鞋能跑,B鞋也能跑,那么在A鞋跑的行为为Run,B鞋跑的行为可以为Run2,这样就导致消费者需要接受很多跑的行为方法(Run、Run2),消费者就肯定不太愿意接受,所以我们需要定义一个接口来定义鞋的行为,然后所有的鞋都继承接口,实现行为(这就类似于行业标准的概念了)

解决方式:

写一个鞋子的接口或者抽象类。

public interface IShoes
{
    void Run();
}

鞋子类都继承它(这个就是制造业中模型的概念了吧)

bubuko.com,布布扣
public class AShoes : IShoes
{
    public void Run()
    {
        System.Console.WriteLine("A Run");
    }
}

public class BShoes : IShoes
{
    public void Run()
    {
        System.Console.WriteLine("B Run");
    }
}
bubuko.com,布布扣

工厂生产鞋:

bubuko.com,布布扣
public class ShoesFactory
{
    public static IShoes CreateShoes(String msg)
    {
        IShoes obj = null;
        if (msg == "A")
        {
            obj = new AShoes();
        }
        else if (msg == "B")
        {
            obj = new BShoes();
        }
     return obj; } }
bubuko.com,布布扣

 消费者使用:

bubuko.com,布布扣
static void Main(string[] args)
{
    IShoes shoes = ShoesFactory.CreateShoes("A");
    shoes.Run();
    Console.ReadKey();
}
bubuko.com,布布扣

这样就会把商品的行为标准化,消费者就只要了解这个标准的行为就行。

总结:

优点,规范的简单工厂,给商品定义了统一的标准行为,客户只要了解这套行为就可以。

消费者不用考虑如何制造商品,有工厂为消费者制造。

(消费者其实就是我们这些码农)

缺点,就是一旦有新的商品出现,我们就需要去修改工厂,这样工厂的代码可扩展现就很差了。

解决:我们需要把工厂接口化,这样出现新的商品,我们就新建一个商品工厂就可以了。

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

原文:http://www.cnblogs.com/kimi-gyj/p/3510830.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!