解析C#设计模式编程中的装饰者模式

2019-12-26 17:37:14丽君
易采站长站为您分析C#设计模式编程中的装饰者模式,同时也谈到了其在.NET框架中的应用,需要的朋友可以参考下  

装饰者模式定义:不通过派生类增改类属性动作,而是通过模式设计动态的达到这种效果,而且比继承更方便灵活减少程序的复杂性。

举例

汪峰打造冠军团队。

首先团队类为空,经过汪峰不断的努力,为团队争取学员,也为团队队员打造合适的平台,让其发挥。

团队不断的变强,变完整,是由装饰者,根据不同的需求,给基类进行增改,一致最后赢得你的赞同,满足你的需求。

实现装配器模式的类图:

解析C#设计模式编程中的装饰者模式

战队组建代码


 //汪峰战队
  abstract class WangFengTeam
  {
    //执行策划命令
    abstract public void Acrion();
  }

  //学员
  class Student : WangFengTeam
  {
    // Methods
    override public void Acrion()
    {
      Console.WriteLine("汪峰团队学员情况:");
    }
  }

  // 战队总策划
  abstract class Direct : WangFengTeam
  {
    //汪峰战队
    protected WangFengTeam team;

    // 策划活动
    public void SetComponent(WangFengTeam team)
    {
      this.team = team;
    }
    //执行策划
    override public void Acrion()
    {
      if (team != null)
      {
        team.Acrion();
      }
    }
  }

  //男孩唱狂放型的,构建一个组合。
  class BoyTeam : Direct
  {
    // 组合名称
    public string teamName= "锋利的Jquery";

    //具体策划
    override public void Acrion()
    {
      base.Acrion();
      Console.WriteLine("我是汪峰团队,狂放型的。");
    }
  }

  //女孩唱婉约型的,来个模特表演
  class GrilTeam : Direct
  {
    //具体策划
    override public void Acrion()
    {
      base.Acrion();      

      Console.WriteLine("我是汪峰团队,婉约型的。");

      //模特表演
      show();
    }

    public void show()
    {
      Console.WriteLine("婉约型,走秀");
    }
  }

客户端代码:


 public static void Main()
    {
      Student team = new Student();
      BoyTeam boy = new BoyTeam();
      GrilTeam girl = new GrilTeam();

      //团队男孩装饰
      boy.SetComponent(team);
      //团队女孩装饰
      girl.SetComponent(boy);
      girl.Acrion();
      Console.Read();
    }