【Unity与23种设计模式】解释器模式(Interpreter)

GoF中定义:

“定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言。”

传统上,执行程序代码通常通过两种方式

第一种:编译程序

第二种:解释器

常见的使用解释器的程序设计语言

包含流行与网页设计领域中的脚本语言

如JavaScript、PHP、Ruby等

这些程序代码经过一般文本编辑器编写完成后放入指定的位置

就可以由应用程序中的解释器直接执行

包括Lua

Unity中

编写好的脚本程序执行之前会被UnityEngine编译过

严格来说不算是解释器模式

但与十几年前的开发工具比较

就会符合解释器模式的定义

文章整理自书籍《设计模式与游戏完美开发》 菜升达 著

时间: 2024-10-29 19:06:48

【Unity与23种设计模式】解释器模式(Interpreter)的相关文章

23种设计模式----------代理模式(二)

(上一篇)23种设计模式----------代理模式(一) 之前说了基本的代理模式和普通代理模式.接下来开始看下强制代理模式和虚拟代理模式 三,强制代理模式: 一般的代理模式都是通过代理类找到被代理的对象,从而调用被代理类中的方法(即完成被代理类中的任务). 而,强制代理模式则是先找到被代理类自己去完成事情,然后被代理类又将该做的事情转交到代理类中,让代理类来完成. 假如:你有事求助于某位名人. 你告诉名人说有事想请他帮忙,然后他说最近一段时间比较忙,要不你找我的经纪人来办吧. (本来找名人办事

23种设计模式----------代理模式(一)

代理模式也叫委托模式. 代理模式定义:对其他对象提供一种代理从而控制对这个对象的访问.就是,代理类 代理 被代理类,来执行被代理类里的方法. 一般情况下,代理模式化有三个角色. 1,抽象的主题类(或者接口) IGamePlayer 2,代理类. 3,被代理类. 下面以游戏玩家代理为例. 一,先来看下最基本的代理模式. 代码如下: 主题接口: 1 package com.yemaozi.proxy.base; 2 3 //游戏玩家主题接口 4 public interface IGamePlaye

23种设计模式----------代理模式(三) 之 动态代理模式

(上一篇)种设计模式----------代理模式(二) 当然代理模式中,用的最广泛的,用的最多的是  动态代理模式. 动态代理:就是实现阶段不用关系代理是哪个,而在运行阶段指定具体哪个代理. 抽象接口的类图如下: --图来自设计模式之禅 所以动态代理模式要有一个InvocationHandler接口 和 GamePlayerIH实现类.其中 InvocationHandler是JD提供的动态代理接口,对被代理类的方法进行代理. 代码实现如下 抽象主题类或者接口: 1 package com.ye

[设计模式] 解释器模式 Interpreter

在GOF的<设计模式:可复用面向对象软件的基础>一书中对解释器模式是这样说的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子.这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题. 就如上面说的那个游戏,我输入up walk 5,我必须按照:移动方向+移动方式+移动距离这种格式输入我的指令,而这种格式的指令就是一种文法,只有按照了我定义的

【Unity与23种设计模式】原型模式(Prototype)

GoF中定义: "使用原型对象来产生指定类的对象,所以产生对象时,是使用复制原型对象来完成." Unity中 开发者可以组装游戏对象 它可以包括复杂的组件 组装好了之后,就可以将其存储为Prefab类型的Unity Asset资源 程序代码中使用的实例化方法(GameObject.Instance) 就是一种原型模式的应用. 原型模式原意为: 将一个复杂对象的组合方式先行设置好 后续使用时就不必再经过相同的组装流程 只需要从做好的"原型"完整地复制出来就可以了.

【Unity与23种设计模式】备忘录模式(Memento)

GoF中定义: "在不违反封装的原则下,获取一个对象的内部状态并保留在外部,让对象可以在日后恢复到原先保留时的状态." 对于一些需要存储的数据,比如历史最高分 当与得分减分系统写入一个类时,违反了单一职责原则 最好是做一个SaveData的类单独存储或获取 而当使用一个单独的类时,又必须将数据public向外公开 这就将游戏置于危险的境地,甚至是方便了外挂横行 针对此矛盾局势 备忘录模式便解决了这一问题 备忘录模式可以描述为: 在不增加各个游戏系统类成员的"存取"方

【Unity与23种设计模式】抽象工厂模式(Abstract Factory)

GoF中定义: "提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类." 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例子为工厂1和工厂2 两个工厂都可以生成产品A和B 但是两个工厂工艺不同 所以工厂1只能生产产品A1和B1 工厂2只能生产产品A2和B2 //可生成各抽象成品对象的操作 public abstract class AbstractFactory{ public abstract AbstractProductA

【Unity与23种设计模式】迭代器模式(Iterator)

GoF中定义: "在不知道集合内部细节的情况下,提供一个按序方法存取一个对象集合体的每一个单元." 迭代器模式由于经常使用到 已经被现代程序设计语言纳为标准语句或收录到标准函数库中 在C#中,经常使用泛型存储对象 当想按序存取这些泛型容器时,都会使用C#的foreach语句 foreach语句就是一个能顺序访问一个集合的方法 它便是C#语言内置的迭代器模式 当然 其他现代语言也提供了类似的语句

【Unity与23种设计模式】状态模式(State)

定义: "让一个对象的行为随着内部状态的改变而变化,而该对象也像是换了类一样" 应用场景: 角色AI:控制角色在不同状态下的AI行为 服务器连接状态:开始连线.连线中.断线等状态 关卡进行状态:不同关卡 using System; using UnityEngine; public class Context {     State m_State = null; public void Request(int Value) {         m_State.Handle(Value