【设计模式】装饰者模式

devtools/2024/10/19 23:49:57/

装饰者模式

角色和buff进行解释

步骤

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

理解

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

代码

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();

http://www.ppmy.cn/devtools/125045.html

相关文章

LeetCode | 69.x的平方根

这道题很适合用二分来解决,算是二门入门的一个练手题吧思想就是首先设置两个指针,一个是0,一个是x,相当于在数轴上划定一个区域 [ 0 , x ]然后计算数轴中间值和我们想要找的值的大小关系,因为数轴是有序的,…

【Go】GO语言知识总结浅析

Go语言是一种现代化的编程语言,由Google于2007年设计并于2009年发布。它旨在使编程变得简单、高效,并且可以在多核处理器上轻松构建高性能应用。Go语言的编程思想、发展历史、版本特点、运行原理、数据类型、应用场景,以及在web开发、网络编程…

使用 Cursor 实现 VSCode 插件

在这篇文章中,我将介绍如何使用 Cursor 来实现一个 VSCode 插件,并以 代码行统计插件 为例展示其实现步骤。这个插件的主要功能是统计某个工作区内各类编程语言的代码行数、空行数等,并展示统计结果。 你可以在 GitHub 上查看完整的代码&…

沉浸式娱乐新纪元,什么是5G+实时云渲染VR大空间解决方案?

近年来,虚拟现实(VR)技术在娱乐、教育、医疗等多个领域展现出巨大的潜力,尤其是VR大空间体验,更是以其沉浸式和互动性的特点,迅速成为市场的新宠。据Statista数据显示,2023年,全球虚…

uniapp打包成安卓video标签层级问题解决

如果uniapp打包成apk用于安卓的话 video标签不会跟随屏幕一起滑动&#xff0c;会固定在屏幕上并且层级过高会挡住其他元素所以需要一个iframe标签封装成组件 <template><iframe :onload"onloadCode" style"width:100%;height:100%;border:1px solid #…

第一章 JavaScript基础

第一章 JavaScript基础 文章目录 第一章 JavaScript基础1、什么是JavaScript1.1 JavaScript特点1.2 JavaScript组成1.3 JavaScript的基本结构1.4 JavaScript的执行原理1.5 网页中引用JavaScript的方式 2、JavaScript核心语法2.1 核心语法—变量2.2 核心语法—数据类型&type…

elementui中el-radio-group内容过长溢出问题

鼠标悬停显示文字 <template> <el-radio-group class"fixed-width-radio-group" v-model"continueruleForm.category" size"mini" fill"#2f54eb" color"#2f54eb" > <el-radio-button label"pr…

python断言和Debug

1、断言 assert&#xff1a;测试判断表示式必须为真的工具。 语法&#xff1a; assert 表达式如果表达式为真&#xff0c;断言后的语句可正常执行。一旦断言为假&#xff0c;程序会报错。 示例: int_value 10 assert int_value 11断言是Python的调试工具&#xff0c;用以…