Nebula3中的属性

Attr命名空间下实现了Mangalore里的动态属性. 属性是编译期间类型安全的key/value对, 这是数据库(database)子系统的基础.

如图, AttrId相于属性类型, 而AttributeDefinition是属性类型的定义, 其中包含了属性名, 属性的四字节码, 值类型和访问类型(读/写). 也就是说, AttrId是AttributeDefinition的实例.

实际使用时我们关心的是Attribute类.

那么使用Attribute有什么好处呢? 我觉得最大的好处是可以把某个对象的属性进行抽象化, 不用每个属性都设置一个成员变量. 对于序列化来说, 有了Attribute我们可以不用关心具体的成员变量而对所有的Attriubte进行统一的处理. 仅仅是增加一个属性成员的话, 是不用对类的代码进行更改的. 我想每个游戏的Character类做需求做到最后, 成员变量的数目变得很吓人吧? 为了保证访问控制还要写上一大堆的get/set方法, 代码行数到最后根本控制不住. 而有了Attribute, 我们只需要知道属性名就可以动态的增加或减少属性了, 这对于脚本化也提供了及大的便利性, 呵呵.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

如何让ASP.NET Web API的Action方法在希望的Culture下执行

在今天编辑推荐的《Hello Web API系列教程——Web API与国际化》一文中,作者通过自定义的HttpMessageHandler的方式根据请求的Ac...

2338
来自专栏Golang语言社区

golang的内存模型与new()与make()

要彻底理解new()与make()的区别, 最好从内存模型入手. golang属于c family, 而c程序在unix的内在模型: |低地址|text|dat...

6.4K7
来自专栏专注 Java 基础分享

字节码文件的内部结构之谜

如果计算机的 CPU 只有「x86」这一种,或者操作系统只有 Windows 这一类,那么或许 Java 就不会诞生。Java 诞生之初就曾宣扬过它的初衷,「一...

3949
来自专栏LeoXu的博客

ActionScript语言基础 原

ActionScript支持比JavaSctipt所支持的更新的ECMAScript标准实现版本。

602
来自专栏landv

C语言_函数【转】

3323
来自专栏Golang语言社区

golang的内存模型与new()与make()

要彻底理解new()与make()的区别, 最好从内存模型入手. golang属于c family, 而c程序在unix的内在模型: |低地址|text|dat...

2956
来自专栏苦逼的码农

Shell编程 --- 变量

(2).如果按作用范围的话,可分为自定义变量和环境变量(后面会将自定义变量和环境变量)。

795
来自专栏用户2442861的专栏

STL源码剖析-map/multimap容器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

1732
来自专栏Java技术

Redis常见的5种不同的数据类型详解

Redis除了可以存储键还可以存储常见的5种数据类型,分别是:String、List、Set、Hash、ZSet。对于Redis的命令有一部分是可以公用的,但是...

861
来自专栏Java学习网

Java8读文件方法代码学习

Java8读文件方法代码学习   JDK7中引入了新的文件操作类java.nio.file.File,它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏...

44510

扫码关注云+社区