设计模式之装饰者模式

设计模式之装饰者模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecoratorPattern
{
    /// <summary>
    /// 饮料抽象类
    /// </summary>
    public abstract class Beverage
    {
        //消费
        public abstract double cost();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecoratorPattern
{
    /// <summary>
    /// 鸡尾酒
    /// </summary>
    public class Flip : Beverage
    {
        public Flip()
        {
        }


        /// <summary>
        /// 每杯鸡尾酒29.9元
        /// </summary>
        /// <returns></returns>
        public override double cost()
        {
            return 29.9;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecoratorPattern
{
    //红酒 调制鸡尾酒的原料
    public class RedWine : CondimentDecorator
    {
        public Beverage beverage;
        public RedWine(Beverage b)
         {
            beverage = b;
        }


        public override double cost()
        {
            return 2.0 + beverage.cost();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecoratorPattern
{
    /// <summary>
    /// 白酒 调制鸡尾酒的原料
    /// </summary>
    public class WhiteWine : CondimentDecorator
    {
         public Beverage beverage;
         public WhiteWine(Beverage b)
         {
            beverage = b;
        }

        

         public override double cost()
        {
            return 2.0 + beverage.cost();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecoratorPattern
{
    /// <summary>
    /// 朗姆酒 调制鸡尾酒的原料
    /// </summary>
    public class Rum : CondimentDecorator
    {
        public Beverage beverage;
        public Rum(Beverage b)
        {
            beverage = b;
        }


        public override double cost()
        {
            return 2.0 + beverage.cost();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DecoratorPattern
{
    class Program
    {
        static void Main(string[] args)
        {
        //一杯鸡尾酒 又加了一份白酒 、红酒 、朗姆酒最后鸡尾酒 的 价格就变了
            Beverage beverage = new Flip();
            beverage = new RedWine(beverage);
            beverage = new WhiteWine(beverage);
            beverage = new Rum(beverage);
            Console.WriteLine("$"+beverage.cost());
            Console.ReadLine();
        }
    }
}


你可能感兴趣的:(设计模式之装饰者模式)