【设计模式】装饰者模式

装饰者模式

角色和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();
相关推荐
新手unity自用笔记30 分钟前
unity学习-灯光类型
学习·unity·游戏引擎
罗迪尼亚的熔岩1 小时前
C# 中 yield关键字的使用
开发语言·c#
F_九歌2 小时前
Unity修改鼠标图片【超简单】
unity·游戏引擎
“抚琴”的人2 小时前
C#操作SqlServer数据库事务
数据库·windows·sql·sqlserver·c#
yngsqq2 小时前
016集——c# 实现CAD类库 与窗体的交互(CAD—C#二次开发入门)
开发语言·c#
木子02044 小时前
Java设计模式
java·开发语言·设计模式
code bean4 小时前
【halcon/C#】弧度和角度的转换
开发语言·c#·halcon
一只小小汤圆4 小时前
c# sring \\W1.235; 先判断是否包含\\W 如果包含 获取\\W和;之间的数
java·数据库·c#
米芝鱼5 小时前
Unity 从BuildIn升级到URP以及常用的效果
游戏·unity·游戏引擎·图形渲染·着色器