装饰器模式

关于装饰器模式

terrylee大哥的这篇文章已经说的很详细了

  http://terrylee.cnblogs.com/archive/2006/03/01/340592.html

这里只是记录一下我自己对装饰器模式理解,实现的一个实例,方便温故而知新

class 装饰
   {
       static void Main(string[] args)
       {
           ICar tank = new BM();//车的基本功能
           tank = new CarA(tank);//在车的基本功能上装饰上 自动档功能
           tank = new CarB(tank);//在车的基本功能和自动档功能上装饰上 定速巡航功能
           tank.Act();
           Console.ReadLine();
       }
   }

   public interface ICar
   {
       void Act();
   }

   public abstract class Car : ICar
   {
       public virtual void Act()
       {
           Console.WriteLine("基本功能");
       }
   }

   public class BM : Car
   {
       public override void Act()
       {
           base.Act();
           Console.WriteLine("宝马特殊功能");
       }
   }

   public class CarA : ICar//自动档功能装饰器
   {
       ICar car = null;
       public CarA(ICar tank)
       {
           this.car = tank;
       }
       public void Act()
       {
           car.Act();
           Console.WriteLine("装饰自动档功能");
       }
   }


   public class CarB : ICar//装饰定速巡航功能装饰器
   {
       ICar car = null;
       public CarB(ICar tank)
       {
           this.car = tank;
       }
       public void Act()
       {
           car.Act();
           Console.WriteLine("装饰定速巡航功能");

       }
   }

转载于:https://www.cnblogs.com/ivanyb/archive/2013/02/08/2909272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值