65.9K
CodeProject 正在变化。 阅读更多。
Home

工厂模式

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

5813

工厂方法是“定义一个用于创建对象的接口,但让子类决定实例化哪个类。” 简单来说,我们

工厂方法是“定义一个用于创建对象的接口,但让子类决定实例化哪个类。” 

简单来说,我们开发一个抽象,隔离确定创建哪种类型类的逻辑。

以下示例可以帮助你完全理解这个概念。

你去咖啡店想点咖啡。 有两种咖啡

- 热的

- 冷的

假设菜单上第一项是热咖啡,第二项是冷咖啡

你告诉他们哪个号码,就会处理相应的订单。

为了用工厂模式解决这个问题,我们将创建一个抽象类和两个子类:

public abstract class Coffee
    {
        public abstract string Title { get; }
    }

    public class Hot : Coffee
    {
        public override string Title
        {
            get { return "加糖的热咖啡"; }
        }
    }

    public class Cold : Coffee
    {
        public override string Title
        {
            get { return "加冰的冷咖啡"; }
        }
    }

// 如果咖啡不可用

    public class NoCoffee : Coffee
    {
        public override string Title
        {
            get { return "今天没有咖啡了.. 要来点别的饮料吗 :) "; }
        }
    }
   

现在我们将创建一个中间类,它将接收用户的输入并创建相关类的对象。

 public static class Factory
    {
        public static Coffee GetCoffee(int i)
        {
            switch (i)
            {
                case 0
                    return new Hot();

                case 1
                    return new Cold();

              
                default
                    return new NoCoffee();

            }
        }
    }

好了,所有工作都完成了,除了订单

只需要提供输入

static void Main(string[] args)
        {
          Console.WriteLine( Factory.GetCoffee(1).Title);
        }

它会显示 热咖啡

有关源代码,请访问以下网址


http://www.xpode.com/ShowArticle.aspx?ArticleId=610

© . All rights reserved.