【设计模式】装饰者模式

装饰者模式

角色和buff进行解释

步骤

  1. 角色和Buff共有一个Component,理解为有同一个操作,给予Buff里面可以填充角色。
  2. 角色有一个基类,Buff有一个基类,因为有多种Buff

理解

不是常规理解上的给角色填装Buff,角色作为主体,而是把角色放进Buff里,这里要做区分。

代码

csharp 复制代码
public class Role : Component
{
    public override void Opration()
    {
        Debug.LogError("我是某个角色");
    }
}

public class Buff : Component
{
    private Component role;

    public void SetComponent(Component component)
    {
        role = component;
    }

    public override void Opration()
    {
        if (role != null)
        {
            role.Opration();
        }
    }
}

public class ZengShang : Buff
{
    public override void Opration()
    {
        base.Opration();
        Debug.LogError("增加了伤害");
    }
}

public class JianShang : Buff
{
    public override void Opration()
    {
        base.Opration();
        Debug.LogError("减少了伤害");
    }
}


//调用

   Role role = new Role();
   ZengShang zengShang = new ZengShang();
   JianShang jianShang = new JianShang();

   zengShang.SetComponent(role);
   jianShang.SetComponent(zengShang);
   jianShang.Opration();
相关推荐
南無忘码至尊4 小时前
Unity学习90天-第2天-认识Unity生命周期函数并用 Update 控制物体移动,FixedUpdate 控制物理
学习·unity·游戏引擎
gihigo19985 小时前
嵌入式幼儿园刷卡系统 (C#实现)
c#
qq_454245035 小时前
通用引用管理框架
数据结构·架构·c#
aq55356005 小时前
三大编程语言深度对比:C# vs 易语言 vs 汇编
开发语言·汇编·c#
光泽雨5 小时前
c# 文件编译的过程
开发语言·c#
zxy28472253015 小时前
使用正运动的仿真软件C#
c#·仿真·运动控制·正运动·无硬件
三省持敬6 小时前
异步并发的“流量警察”:在C#中使用SemaphoreSlim进行并发控制的最佳实践
c#
唐青枫7 小时前
C#.NET IL 中间码 深入解析:从 C# 编译结果到 CLR 执行链路
c#·.net
小林up8 小时前
【Unity URP源码阅读1】ColorGradingLUT
unity·游戏引擎