Live Object(活性对象)

来源:互联网 发布:自学小提琴 知乎 编辑:程序博客网 时间:2024/04/29 18:29

Live Object(活性对象)有两种,一种Reference(参照对象),一种Composite(合成对象),后者实际上是由前者作为原语来构成的,所以弄明白Reference,就可以自己构建Composite的活性对象。

而Reference objects又有三种:

1. Predefined,实际上也是Library 库对象。它们以.Net 库的方式实现,他们的代码要么是内置到活性对象的运行库中了,或者从网上下载下来都可以。

2. Repository,仓库对象。这种对象的定义被内置到其他对象例如Repositories和Folders里面。所以如果要实例化这些对象,需要先和他们的“仓库”进行沟通。

3. Parameter,参数对象。这种对象被用作定义Composite对象时传递的参数,

抛开参数对象不谈,前两种都是比较容易了解和使用的,它们都必须有一个唯一的ID,并以XML的attribute "id"来表示。

Predefined objects的ID格式:

namespaceid`namespaceversion:componentid`componentversion

注意:高亮的 "`" (back-apostrophe)和 ":" (colon)是分割符。"libraryid"(namespaceid)和 "componentid" 是128-bit十六进制数,分别用于标识对象定义的命名空间和被指定的组件ID。而"namespaceversion" 和 "componentversion" 则由64-bit十进制数来编码。

这里的"namespace",典型代表就是.NET library,但是一个namespace也可能跨越多个library。我们假设,在一些全局性的目录中,为了防止冲突,一些namespace的号 码应该被预留,尽管目前简单地使用类似VS里面随机产生的GUIDID也是足够应付的。在一个特定的namespace里面,component id可以是任何值。我们假设namespace和component的版本是向后兼容的。

ID命名中的四个部分都可以是空值,也就是“0”,其中Namespace "0" 被保留为运行时(runtime)。因此,一个“0`0:C69D58A635524737981E4C8AB9279EDD`0”的ID可以被简写 成"C69D58A635524737981E4C8AB9279EDD",这代表着一个在任意版本的活性对象运行时中定义的任意版本的组件,其名字为 “C69D58A635524737981E4C8AB9279EDD”。其实在命名时,也可以忽略关于namespace版本信息的指定,这样一个 如"X:Y"的ID可以被翻译为"活性对象运行时中版本高于Y的组件X", "X:Y`Z" 则代表"namesapce X下版本高于Z的组件Y"。

0 0
原创粉丝点击