zoukankan      html  css  js  c++  java
  • 装饰器模式

    关于装饰器模式

    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("装饰定速巡航功能");
    
           }
       }
    人生无处不PK
  • 相关阅读:
    12-单表查询
    11-数据的增删改
    10-外键的变种 三种关系
    09-完整性约束
    08-数据类型(2)
    07-数据类型
    06-表的操作
    05-库的操作
    Spring:(六) 代理模式
    Spring:(五) 注解
  • 原文地址:https://www.cnblogs.com/ivanyb/p/2909272.html
Copyright © 2011-2022 走看看