zoukankan      html  css  js  c++  java
  • 简单工厂模式

    设计模式需要认知理解并内化。较为简单并符合思维习惯的模型易于理解接受。

    故事:

    有个工厂,提供定制鞋子(休闲鞋/运动鞋)的服务。你可以定制你喜欢的鞋子。

    建模:

    简单工厂,确实就是一个很简单的工厂。

    鞋子,有运动鞋和休闲鞋。

    你是这个工厂的客户。

    类图:

    实现:

    ShoesFactory

    namespace SimpleFactory
    {
        static class ShoesFactory
        {
            public static Shoes produceShoes(string shoesType)
            {            
                Console.WriteLine("<工厂公告>客户需要的鞋子类型是:{0}\n", shoesType);
                // -- 决策点
                switch (shoesType)
                {
                    case "Leisure":
                        return new LeisureShoes();
                    case "Sport":
                        return new SportShoes();
                    default:
                        return new SportShoes();
                }
            }
        }
    }

    Shoes

    namespace SimpleFactory
    {
        class Shoes
        {
            public Shoes()
            {
                Console.WriteLine("即将生产鞋子,请稍等");
            }
        }
    }

    LeisureShoes

    namespace SimpleFactory
    {
        class LeisureShoes:Shoes
        {
            public LeisureShoes()
            {
                Console.WriteLine("生产休闲鞋");
                Console.WriteLine("休闲鞋完成");
            }
        }
    }

    SportShoes

    namespace SimpleFactory
    {
        class SportShoes:Shoes
        {
            public SportShoes()
            {
                Console.WriteLine("生产运动鞋");
                Console.WriteLine("运动鞋完成");
            }
        }
    }

    Program

    namespace SimpleFactory
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("请输入你想要的鞋子:Sport/Leisure");
                string shoesType = Console.ReadLine();
    
                Console.WriteLine("\n------进厂定制---------\n");
                Shoes shoes = ShoesFactory.produceShoes(shoesType);
                Console.WriteLine("\n-------鞋子出厂--------\n");
            }
        }
    }

    效果:

  • 相关阅读:
    CSS(22)CSS的长度单位
    CSS(21)CSS Grid网格布局
    CSS(20)CSS3 弹性盒子(Flex Box)
    CSS(19)CSS3 多列
    CSS(18)CSS3 过渡与动画
    CSS(17)CSS 2D、3D 转换
    CSS(16)CSS3 渐变(Gradients)
    CSS(15)CSS媒体查询Media Queries
    CSS(14)CSS 伪元素
    CSS(13)CSS 伪类(Pseudo-classes)
  • 原文地址:https://www.cnblogs.com/jiejue/p/2711474.html
Copyright © 2011-2022 走看看