Unity23种设计模式之 解释器模式

做项目时遇到场景:hp>50&&level>10 kill(100)&&time<60

如果是用一堆if-else 或者 switch写的,那么需要了解一下适配器模式

1.适配器模式是什么?

给定一门语言,定义它的文法表示,并定义一个解释器,用来解释语言中的句子。

2.实战

目标:实现一个技能释放条件系统

cs 复制代码
level >= 10 && hp > 50

(1)上下文(Context)

cs 复制代码
public class SkillContext
{
    public int Level;
    public int Hp;
}

(2)抽象表达式

所有表达式都实现这个接口

cs 复制代码
public interface IExpression
{
    bool Interpret(SkillContext context);
}

(3)终结符表达式(最小规则)

cs 复制代码
//等级条件

public class LevelExpression : IExpression
{
    private int _needLevel;

    public LevelExpression(int needLevel)
    {
        _needLevel = needLevel;
    }

    public bool Interpret(SkillContext context)
    {
        return context.Level >= _needLevel;
    }
}
cs 复制代码
//血量条件
public class HpExpression : IExpression
{
    private int _needHp;

    public HpExpression(int needHp)
    {
        _needHp = needHp;
    }

    public bool Interpret(SkillContext context)
    {
        return context.Hp > _needHp;
    }
}

(4)非终结表达式

cs 复制代码
public class AndExpression : IExpression
{
    private IExpression _left;
    private IExpression _right;

    public AndExpression(IExpression left, IExpression right)
    {
        _left = left;
        _right = right;
    }

    public bool Interpret(SkillContext context)
    {
        return _left.Interpret(context) && _right.Interpret(context);
    }
}

(5)使用实例

cs 复制代码
void TestSkillCondition()
{
    SkillContext context = new SkillContext()
    {
        Level = 12,
        Hp = 80
    };

    IExpression condition =
        new AndExpression(
            new LevelExpression(10),
            new HpExpression(50)
        );

    bool canUseSkill = condition.Interpret(context);

    Debug.Log("是否可释放技能:" + canUseSkill);
}

3.优缺点

优点:规则高度解耦,新增规则只需加类,不动老逻辑,非常适合策划配置话、可组合拓展

缺点:类数量容易爆炸

相关推荐
workflower9 小时前
案例 :某交通厅基于AI技术的智能安全运营实践
网络·人工智能·安全·设计模式·机器人
workflower1 天前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造
ly76892 天前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-14-适配器模式(业务实战篇)
java·设计模式·适配器模式·系统兼容·多渠道对接
略略略咯咯2 天前
(总结)设计模式
设计模式
Cosolar3 天前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
Nebula_g3 天前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye3 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o4 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手4 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建