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();
            }
        }
     
    工厂方法模式总结
    我不再负责记住每个女孩想吃什么口味的汉堡了,而是将每个女孩想吃什么口味的汉堡交给她们自己去做。即系统中的核心工厂类不再负责所有产品的创建,而是将具体的创建工作交给子类,核心工厂类仅仅负责给出具体工厂类实现的接口,成为一个抽象工厂角色,而不接触哪一个产品类应当被实例化的细节。
  • 相关阅读:
    ORACLE删除当前用户下所有的表的方法
    解决Tomcat对POST请求文件上传大小的限制
    Windows下如何查看某个端口被谁占用
    javamail彻底解决中文乱码的方法
    Tomcat通过setenv.bat指定jdk和jre(相对路径)
    Linux nohup命令详解
    shell 重启java 程序
    jstack命令执行报错:Unable to open socket file: target process not responding or HotSpot VM not loaded
    ToStringBuilder.reflectionToString用法
    vue自定义指令+只能输入数字和英文+修改v-model绑定的值
  • 原文地址:https://www.cnblogs.com/superstar/p/2305276.html
Copyright © 2011-2022 走看看