游戏设计模式学习笔记(8)行为模式(字节码、子类沙箱、类型对象)

手把手教你使用Segformer训练自己的数据 SegFormer 基于Swin transformer 修改 阅读详情

游戏设计模式学习笔记(8)行为模式(字节码、子类沙箱、类型对象)

参考:

《设计模式与游戏完美开发》

《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)

《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)

【游戏设计模式】浅墨_毛星云: https://blog.youkuaiyun.com/poem_qianmo/article/details/53240330


字节码

定义

  • 将行为编码为虚拟机器上的指令,赋予其数据的灵活性。
  • 指令集
    • 定义了在字节码中可以干什么,不能干什么,对虚拟机性能也有很大的影响。
    • 定义了可执行的底层操作。 一系列的指令被编码为字节序列。 虚拟机 使用 中间值栈 依次执行这些指令。 通过组合指令,可以定义复杂的高层行为。

子类沙箱

定义

  • 用一系列由基类提供的操作定义子类中的行为。
  • 基类定义抽象的沙箱方法和几个提供的操作。 将操作标为protected,表明它们只为子类所使用。 每个推导出的沙箱子类用提供的操作实现了沙箱函数。

何时使用

  • 你有一个能推导很多子类的基类。
  • 基类可以提供子类需要的所有操作。
  • 在子类中有行为重复,你想要更容易地在它们间分享代码。
  • 你想要最小化子类和程序的其他部分的耦合。

类型对象

定义

  • 创造一个类A来允许灵活地创造新“类型”,类A的每个实例都代表了不同的对象类型。
  • 定义类型对象类和有类型的对象类。每个类型对象实例代表一种不同的逻辑类型。 每种有类型的对象保存对描述它类型的类型对象的引用。
  • 这个模式和状态模式有很多相似之处。 两者都委托对象的部分定义给另外一个对象。 通过类型对象,我们通常委托了对象是什么:不变的数据概括描述对象。 通过状态,我们委托了对象现在是什么:暂时描述对象当前状态的数据。

可以看做一些配置,直接读表就好了。

Linux驱动学习--HCI框架及源码分析 目录 一、引言 二、HCI框架 三、pcm_read简要分析 一、引言 最近一直在分析蓝牙驱动,发现在底层驱动与上层协议栈间还有一层HCI,主机控制层,两者之间通过HCI协议通讯 而Linux也将HCI协议抽象层了一个框架。 为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像 UART、USB和PC Card等等。hci_core.c相当于一个框架,用于把各种具体通信方式绞合起来,并提供一些公共函数的实现。 今天就来简单的分析一下 二 阅读详情

相关推荐

别再手动挂载NPU了!手把手教你用Ascend-Docker-Runtime一键启动昇腾AI容器

本文详细介绍了如何使用Ascend-Docker-Runtime一键启动昇腾AI容器,大幅简化NPU设备挂载流程。通过环境变量ASCEND_VISIBLE_DEVICES,开发者可以灵活指定NPU设备,提升开发效率。文章还提供了安装配置指南、高级使用技巧和常见问题排查方法,帮助开发者快速掌握这一高效工具。

weixin_42662605的博客 252

【游戏设计模式】【行为型模式】子类沙盒

子类沙盒是一种将操作封装在基类中,然后在子类中组合这些操作的方法。这样可以减少子类的耦合,但是也会导致基类变得庞大。可以通过辅助类再次封装方法,或者通过构造函数传递、构造初始化方法传递、状态静态化、服务定位器等方法来传递实例。

DoorToZen的博客 791

关于Selenium3在MicrosoftEdge浏览器中出现的问题

前言 最近在做web自动化测试,所用环境是java+selenium3.141.59+MicrosoftEdge(Chromium)浏览器。 在调试的过程中,出现了很多问题。比如selenium3在Edge浏览器中远程调用中,不支持addArguments方法等 问题 1.Edge浏览器弹窗问题 在测试过程中,会出现弹出窗提示 ...

zhucheng1994的博客 2188

行为模式--子类沙箱

理论要点 什么是子类沙箱:用一系列由基类提供的操作定义子类中的行为。通俗地讲就是把公共的操作都封装进基类,子类不直接与外部其它模块耦合,把耦合集中到基类统一处理。 要点:基类定义抽象的沙箱方法和几个提供操作的实现方法,将他们设为protected,表明它们只为子类所使用。每个推导出的沙箱子类用提供的操作实现了沙箱方法。 使用场合: 子类沙箱模式是潜伏在编程日常中简单常用的模式,哪怕是在游戏之外的

疯狂的程序员 1031

UR5双臂Gazebo仿真(Python)

近来在Gazebo上搭了一个ur5双臂仿真平台。 差不多就是以下这样。 使用rostopic list查看一下话题,如下 显然,采用/left_arm_controller/follow_joint_trajectory/goal和/right_arm_controller/follow_joint_trajectory/goal两个话题来控制双臂的运动。 现在的问题是,如何保证双臂运动的一致性,即如何能保证双臂能同时接受到以上两个消息。 思路一:设置/left_arm_controlle

qq_42823342的博客 2233

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

【设计模式】JAVA Design Patterns——Bytecode(字节码模式)

巫师的行为需要经过精心的调整和上百次的游玩测试。每次当游戏设计师想改变巫师行为时都让程序员去修改代码这是不妥的,所以巫师行为以数据驱动的虚拟机方式实现。指令集定义了可以执行的低级操作。虚拟机一次一条地执行这些指令,中间的值用栈处理。通过组合指令,可以定义复杂的高级行为。展示虚拟机可用的指令。每个指令对于如何操作栈中的数据都有自己的语义。例如,增加指令,其取得栈顶的两个元素并把结果压入栈中。它将指令作为输入并执行它们以提供游戏对象行为。字节码模式支持由数据而不是代码驱动的行为。允许编码行为作为虚拟机的指令。

CSBIGDOG的博客 924

clock-gating整理

文章目录clock gating 理解1、latch双稳态器件常见锁存器结构SR锁存器D锁存器2、clock gating(clock low-active) latch + AND gating 电路(clock high-active)latch + OR gating 电路 clock gating 理解 1、latch 参考:https://www.cnblogs.com/IClearner/p/6443539.html 双稳态器件 稳定状态为0或1两种 举例:交叉耦合反相器 假设初始Q为1,则可

d_b_的博客 1万+

游戏设计模式阅读笔记10——行为模式(字节码)

一、意图 将行为编码为虚拟机器上的指令,赋予其数据的灵活性。 二、动机 为了脱离出一些容易被修改的部分,而不是使用硬编码的方式。如果是硬编码,每次修改都要在游戏的可执行文件打补丁。如果支持模组,那每个模组制造这都需要拥有编译游戏的整套工具链。而且需要开源游戏代码。 三、方法 1.解释器模式 以编程语言为例:比如算术表达式:(1 + 2)*(3 - 4) 将每块表达式和每条语言规则都变成对象。就变成了下面的树状。 解释器模...

林深藏却云门寺 565

【 史上最全】测绘、遥感RS、地信GIS国家级比赛竞赛整理

目录Esri Esri

weixin_43910227的博客 9148

SAP DRC 是什么?一文读懂 SAP Document and Reporting Compliance 的定位、架构与落地案例

把视线拉长,会发现SAP DRC的价值并不仅是用来交差的工具。它更像是企业在全球化经营中建设的一套公共底座:既能以最低的重复成本去应对各国不断演进的监管要求,也能为财务数字化与供应链协同提供可信数据回路。依托本地与云的分层职责、与的生态联动、以及按国家不断更新的任务目录,企业可以将合规变成一种标准化、工程化、可持续运营的能力。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1647

行为模式--字节码

理论要点 什么是字节码模式:将行为编码为虚拟机器上的指令,来赋予其数据的灵活性。从而让数据易于修改,易于加载,并与其他可执行部分相隔离。 要点 1,字节码模式:指令集定义了可执行的底层操作。一系列的指令被编码为字节序列。 虚拟机使用中间值堆栈依次执行这些指令。 通过组合指令,可以定义复杂的高层行为。2,可以理解为项目中的转表工具,将excel中的数据转为二进制数据,并读取到工程中。还有如在项目中

疯狂的程序员 2584

目标检测YOLO实战应用案例100讲-【目标检测】缺陷检测(二)

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。在金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。

qq_36130719的博客 728

《游戏编程模式》学习笔记——游戏编程中的设计模式

最近在阅读《游戏编程模式》的译本:https://gpp.tkchu.me/学习之余正好看到浅墨大神的总结提炼,看完之后搬运过来,记录自己的学习过程原文:https://blog.youkuaiyun.com/poem_qianmo/article/details/53240330书中的19种设计模式,目前学习了一二四一、常用GOF设计模式1.命令模式2.享元模式3.观察者模式4.原型模式5.单例模式6.状态...

lhcmt1的博客 2270

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

学习笔记-《游戏编程模式》

《游戏编程模式》全书内容梗概总结 这是一篇超过万字读书笔记,总结了《游戏编程模式》一书中所有章节与内容的知识梗概。 目录与说明 《游戏编程模式》一书中总共介绍了19种设计模式,权当目录,现列举如下: 零、全书内容思维导图 一、常用GOF设计模式 1.命令模式 2.享元模式 3.观察者模式 4.原型模式 5.单例模式 6.状态模式 二、序列型模式 7.双缓冲模式 8.游戏循环模式 ...

ai agent 1638

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

游戏设计模式 - 子类沙箱

子类沙箱模式(Subclass Sandbox)通过将核心逻辑封装在基类中,为子类提供安全的"沙箱"环境。子类通过组合或重写基类提供的预定义操作来实现行为,而非直接操作底层系统。 这种模式在游戏开发中常用于实现角色技能、AI行为等需要大量复用基础操作的系统。

qq_51613678的博客 1253

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

23种设计模式

抽象工厂模式是基于工厂方法模式,他将所有的产品分类为各种产品族,每个产品族中的具体对象由一个抽象工厂来创建,产品族的抽象工厂继承顶级工厂。里氏替换原则指程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换的。工厂方法模式将有一个抽象工厂类,各类的产品都有各自的工厂类来实现创建,使用者通常不需要知道创建过程,只需要调用具体实现工厂来进行创建,不用直接创建具体产品。建造者模式是主要用于复杂对象的创建,使用者不必知道如何去创建这个具体对象,只需要通过建造者进行创建,通常采用链式调用来创建具体对象。

qq_46624276的博客 1133

游戏编程模式之字节码模式

通过将行为编码成虚拟机指令,而使其具备数据的灵活性。 (摘自《游戏编程模式》) 游戏是一个庞大的工程,因此,在开发的过程中我们会选用高稳定性和高效率的重型语言,例如C++。C++的每一次代码更新都需要编译,然而庞大的代码量使得编译时间变得很长。因此,我们需要想办法将可自定义性高、变动可能性高的部分从代码主干中剥离出来(而游戏代码中恰好有很多部分符合这个要求),这样的代码极大的减少每一次更改后需要重新编译的次数。这就是字节码模式最根本的目的。 至于其实现原理,很简单,将可变动内容(数值、执行指令、简单逻辑.

ZhuSenlin的博客。 356

游戏设计模式阅读笔记11——行为模式(子类沙箱)

基类定义抽象的沙箱方法和几个提供的操作。将操作标为protected,表明它们只为子类所使用。每个推导出的沙箱子类用提供的操作实现了沙箱函数。

林深藏却云门寺 1525

字节码(java bytecode)在JAVA中的概念及作用

      字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。通常情况下它是已经经过编译,但与特定机器码无关。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。       字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现...

艺术架构 7833

游戏行为模式——巴图模型

理查德·巴图(Richard Bartle)博士是1978年人类历史上第一个MUD游戏的制作人之一。他注意到MUD里面有一些固定的游戏行为模式,并且第一次尝试把这些行为模式进行分类和总结。这些行为模式被分为四大类:成就型、探索型、社交型和杀手型。     以下简单对四类玩家行为进行简要说明:1:成就型玩家的兴趣是对游戏有所作为,也就是对游戏世界展开行动。他们往往不太关心与他人的交流或者是探索整个游

clouderyu的专栏 5980

设计模式之代理模式(通过字节码探究执行过程)

代理模式 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 1、静态代理 我们有一个接口Movable,实现该接口的类都是可移动的: interface Movable{ void move(); } public class Car implements Movable { @Override public void move() { System.out.println("Car

蒟蒻达的博客 340

字节码指令简介

摘自《深入理解 Java 虚拟机:JVM 高级特性与最佳实践》(第二版)         Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于 Java 虚拟机采用面向操作数栈而不是寄存器的架构,所以大多数的指令都不包含操作数,只有一个操作码。         字节码

wilim 8878

类加载器、双亲委派机制及沙箱机制详解

3.类加载器 类是一个模版是抽象的,对象是实例是具体的 作用:加载Class文件 例如:一个对象Student的创建过程 4.双亲委派机制 目的:保证安全 类加载器种类: 1.虚拟机自带加载器 2.启动类加载器 (Bootstrap classLoader):主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader 3.扩展类加载器 (...

chenping的博客 1139

ulua之LuaByteMode模式

ulua使用lua的字节码模式 什么是luajit? luajit就是lua的一个特殊版本,可以兼容lua5.1,也可以独立于lua使用。luajit比原生lua速度更快,效率更高。ulua(cstolua)其实已经集成了luajit,lua想要编译为字节码,可以使用luac编译,也可以使用luajit编译那么ulua使用ByteMode模式,其实就是luajit的字节

TxNet 4436

游戏开发中常用设计模式梳理和总结

阅前提示: 本文讲述内容为游戏开发中涉及的常用设计模式,以及个人对这些模式的思考和总结,这些模式来自于前辈们众多项目经验实战总结,因此读者应具备一定的游戏开发经验,方能更好的理解和运用到实际工作中 目录: 状态模式 外观模式 单例模式 中介者模式 桥接模式 策略模式 模板方法模式 工厂模式 建造者模式 享元模式 组合模式 命令模式 责任链模式 观察者模式 备忘录模式 访问者模式 装饰模式...

CraneInForest的专栏 4188
上一篇: 游戏设计模式学习笔记(7)序列模式(双缓冲模式、游戏循环、更新方法)
下一篇: 游戏设计模式学习笔记(9)解耦模式(组件模式、事件队列、服务定位器)
ChiLi_Lin
博客等级 码龄12年 760粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值