zoukankan      html  css  js  c++  java
  • 建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

    我们假设一个快餐店的商业案例,其中,一个典型的套餐可以是一个汉堡(Burger)和一杯冷饮(Cold drink)。汉堡(Burger)可以是素食汉堡(Veg Burger)或鸡肉汉堡(Chicken Burger),它们是包在纸盒中。冷饮(Cold drink)可以是可口可乐(coke)或百事可乐(pepsi),它们是装在瓶子中。

       #region 基本接口 
        interface Item
        {
            float price();
            string name();
            Packing packing();
        }
        //包裹
        interface Packing
        {
            string pack();
        }
        #endregion
       #region 包裹类
        class Wapper : Packing
        {
            public string pack()
            {
                return "wapper";
            }
        }
        class Bottle:Packing
        {
            public string pack()
            {
                return "bottle";
            }
        }
        #endregion
       #region 大的抽象类
        abstract class Burger : Item
        {
            public abstract string name();
    
            public Packing packing()
            {
                return new Wapper();
            }
    
            public abstract float price();
        }
        abstract class ColdDrink : Item
        {
            public abstract string name();
    
            public Packing packing()
            {
                return new Bottle();
            }
    
            public abstract float price();
        }
        #endregion
     #region 扩展的具体类
        class VegBurger : Burger
        {
            public override string name()
            {
                return "蔬菜汉堡";
            }
    
            public override float price()
            {
                return 8.0f;
            }
        }
        class ChickenBurger: Burger
        {
            public override string name()
            {
                return "麦辣鸡腿堡";
            }
    
            public override float price()
            {
                return 18.0f;
            }
        }
        class Coke : ColdDrink
        {
            public override string name()
            {
                return "可口可乐";
            }
    
            public override float price()
            {
                return 6.0f;
            }
        }
        class Pepsi : ColdDrink
        {
            public override string name()
            {
                return "百事可乐";
            }
    
            public override float price()
            {
                return 5.0f;
            }
        }
        #endregion
     #region 点餐类
        class Meal
        {
            private List<Item> _itemList = new List<Item>();
            public void Add(Item item)
            {
                _itemList.Add(item);
            }
            public void Remove(Item item)
            {
                _itemList.Remove(item);
            }
            public void ShowMeal()
            {
                foreach (Item item in _itemList)
                {
                    Console.WriteLine("name:{0},price{1},package:{2}",item.name(), item.price(), item.packing().pack());
                }
            }
        }
        #endregion
     static void Main(string[] args)
            {
                Meal meal = new Meal();
                meal.Add(new ChickenBurger());
                meal.Add(new Pepsi());
                meal.ShowMeal();
                Console.ReadKey();
            }

    建造者模式就是可以一个个堆,重点是都实现最基本的接口,然后在调用建造者的类的时候,通过这个基本接口调用实际类的对象,将入列表中等待使用,完成建造。

  • 相关阅读:
    57-java 开发环境配置,mysql解压版安装
    56-MyBatis关联映射之一对多映射
    55-mybatis dao 和 映射xml
    54-jquery发送请求 json 转化等
    58-wxPython 嵌入html页面
    57-2015-第六届蓝桥杯国赛 java B组真题与解析
    【读书笔记】Effective Modern Cpp(二)
    【读书笔记】Effective Modern Cpp(一)
    【剑指offer】汇总
    【剑指offer】序列化二叉树
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/12220619.html
Copyright © 2011-2022 走看看