Nebula3中的属性

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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LeoXu的博客

ActionScript语言基础 原

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

662
来自专栏Golang语言社区

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

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

3036
来自专栏Golang语言社区

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

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

6.4K7
来自专栏用户2442861的专栏

STL源码剖析-map/multimap容器

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

2242
来自专栏JAVA技术站

shell学习三参数传递 原

echo "Shell 传递参数实例" echo "执行的文件名:$0" echo "第一个参数为:$1" echo "第二个参数为:$2" echo ...

492
来自专栏landv

C语言_函数【转】

4613
来自专栏技术博客

C#简单的面试题目(四)

46.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?

1152
来自专栏游戏杂谈

describeType的使用

describeType函数在adobe官方在线文档上的定义如下:生成描述ActionScript对象(命令为方法的参数)的XML对象,此方法实现ActionS...

1033
来自专栏用户2442861的专栏

STL源码剖析-set容器

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

2053
来自专栏程序员的知识天地

Python程序员必备的30个编程技巧

直接交换2个数字的位置 Python 提供了一种直观的方式在一行代码中赋值和交换(变量值)。如下所示:

1562

扫码关注云+社区

领取腾讯云代金券