zoukankan      html  css  js  c++  java
  • 转工厂方法模式想吃什么汉堡自己要

    工厂方法模式比喻
    请女生去麦当劳吃汉堡,不同的女生有不同的口味,要每个都记住是一件烦人的事情,我一般采用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();
            }
        }
     
    工厂方法模式总结
    我不再负责记住每个女孩想吃什么口味的汉堡了,而是将每个女孩想吃什么口味的汉堡交给她们自己去做。即系统中的核心工厂类不再负责所有产品的创建,而是将具体的创建工作交给子类,核心工厂类仅仅负责给出具体工厂类实现的接口,成为一个抽象工厂角色,而不接触哪一个产品类应当被实例化的细节。
  • 相关阅读:
    SlideShare
    准备SCJP考试
    Sun的过去
    shardingjdbc基础教程
    上万页大数据量的分页查询方案
    shardingjdbc教程 看这一篇就够了
    微服务化的认识
    JDK9对String底层存储的优化
    水平分表
    深入理解Java中的字段与属性的区别
  • 原文地址:https://www.cnblogs.com/superstar/p/2305276.html
Copyright © 2011-2022 走看看