转工厂方法模式-想吃什么汉堡自己要

工厂方法模式比喻
请女生去麦当劳吃汉堡,不同的女生有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method-工厂方法模式,带着女孩到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让女生直接跟服务员说就行了。

工厂方法模式意图
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

工厂方法模式类图 
www.zhuli8.com-朱利IT博客
 
 
工厂方法模式实现
     /// <summary>
    /// 工厂方法模式中,提供不同的女孩不同的口味的汉堡,相当于我的职责
    /// </summary>
    interface IGirl
    {
        IHamburg DemandHamburg();
    }
    /// <summary>
    /// 喜欢吃第一种汉堡的女孩
    /// </summary>
    class Girl1 : IGirl
    {
        public IHamburg DemandHamburg()
        {
            return new Hamburg1();
        }
    }
    /// <summary>
    /// 喜欢吃第二种汉堡的女孩
    /// </summary>
    class Girl2 : IGirl
    {
        public IHamburg DemandHamburg()
        {
            return new Hamburg2();
        }
    }
    /// <summary>
    /// 不同口味汉堡的抽象
    /// </summary>
    interface IHamburg
    {
        void ImproveHamburg();
    }
    /// <summary>
    /// 第一种口味汉堡
    /// </summary>
    class Hamburg1 : IHamburg
    {
        public void ImproveHamburg()
        {
            Console.WriteLine("提供第一种口味女孩的汉堡");
        }
    }
    /// <summary>
    /// 第二种口味汉堡
    /// </summary>
    class Hamburg2 : IHamburg
    {
        public void ImproveHamburg()
        {
            Console.WriteLine("提供第二种口味女孩的汉堡");
        }
    }
    /// <summary>
    /// 工厂方法模式客户端应用
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //喜欢第一种口味汉堡的女孩子
            IGirl girl = new Girl1();
            //提供女生喜欢的汉堡
            IHamburg hamburg=girl.DemandHamburg();
            hamburg.ImproveHamburg();
            Console.Read();
        }
    }
 
工厂方法模式总结
我不再负责记住每个女孩想吃什么口味的汉堡了,而是将每个女孩想吃什么口味的汉堡交给她们自己去做。即系统中的核心工厂类不再负责所有产品的创建,而是将具体的创建工作交给子类,核心工厂类仅仅负责给出具体工厂类实现的接口,成为一个抽象工厂角色,而不接触哪一个产品类应当被实例化的细节。

转载于:https://www.cnblogs.com/superstar/archive/2011/12/28/2305276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值