装饰者模式(C#)

装饰者模式要点:

声明一个基类(抽象类型),定义基本的动作方法。声明一个起点类继承实现这个基类,然后定义N个装饰者类也继承并实现这个基类。无论是起点类还是装饰者类,他们的共同特点是:继承基类性类别,并传入基类型参数,并针对实体参数做进一步操作,当然也可以忽略传入的参数,做覆盖处理。

实例:

public abstract class Fruit
    {
        public abstract double cost();
    }

    public class BuyFruit: Fruit
    {
        override
        public Double cost()
        {
            return 0.11;//塑料袋价格
        }
    }
    /// <summary>
    /// 苹果
    /// </summary>
    public  class Apple : Fruit
    {
        private Fruit fruit;

        public Apple(Fruit x)
        {
            this.fruit = x;
        }
        override
        public  Double cost()
        {
            return fruit.cost()+ 3.6;//苹果价格
        }
    }
    /// <summary>
    /// 桔子
    /// </summary>
    public class Orange : Fruit
    {
        private Fruit fruit;

        public Orange(Fruit x)
        {
            this.fruit = x;
        }
        override
        public Double cost()
        {
            return fruit.cost() + 12.00;//桔子价格
        }
    }

调用代码:

Fruit fruit = new BuyFruit();

fruit = new Apple(fruit);
fruit = new Orange(fruit);
Console.WriteLine("购买水果总价格:{0}元",fruit.cost());

调用结果:

购买水果总价格:15.71元

 

posted @ 2022-03-10 18:01  Shapley  阅读(81)  评论(0)    收藏  举报