【设计模式】装饰者模式

装饰者模式

角色和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();
相关推荐
workflower8 小时前
装备企业的 AI 路线图
人工智能·深度学习·机器学习·设计模式·机器人
czhc114007566311 小时前
7.29:树形;
c#
cm04Z9c9112 小时前
C#摸鱼实录——IoC与DI案例详解
开发语言·c#
geovindu17 小时前
CSharp:Chain of Responsibility Pattern
开发语言·后端·设计模式·c#·.net·责任链模式·行为模式
颜x小19 小时前
[C#]泛型类与泛型方法
开发语言·c++·c#
caishenzhibiao19 小时前
顺势交易矩阵主图 同花顺期货通指标
java·c语言·c#
梓仁沐白20 小时前
【Agent 设计模式】多智能体协作
microsoft·设计模式·php
努力学习的廖同学20 小时前
前端进阶-设计模式
设计模式
TDengine (老段)20 小时前
TDengine Node.js 与 C# 连接器 — Web 服务与 .NET 集成
大数据·数据库·node.js·c#·.net·时序数据库·tdengine
懒狗跑ai的程序员Brain20 小时前
如何利用粒子系统在unity制作一个烟花(粒子系统学习向)
学习·unity·游戏引擎