动态模型是一种抽象的面向对象的编程方法,它使用模型来表示类、对象和行为等。其中模型是结构化的数据,可以使用XML和JSON等来表示。
动态模型的概念有点抽象,但其实是面向对象编程方法的理念“万物皆对象”的直白的解释,即任何东西都是对象,对象可以用模型来表示,模型是数据。
既然“万物皆对象”,那么对象是如何能够表示各种东西的呢?这取决于我们如何解释它。
比如一个对象之所以可以作为类,是因为这个对象具有类的特征,即使用它可以描述一个对象的结构和行为。同样对象也可以作为行为,只要能把它变成可执行的。
虽然动态模型的概念有点抽象,但其实它是一个典型的面向对象的编程方法。编程一般也是先定义类,然后用类来实例化对象。
使用模型表示类的示意代码。
<thing name="Person">
<attribute name="name"/>
<actions>
<JavaAction name="sayHello"/>
</actions>
<thing name="Child" exends="Person"/>
</thing>
如上面的示意代码,该XML是一个可以作为类的模型。
使用模型表示对象的示意代码。
<Person name="Zhagnsan" descriptors="Person">
<Child name="Xiaoming"/>
</Person>
模型就是最终的程序。一般模型可以在编辑器中直接运行。如果把XWorker设置成系统全局的模型引擎,模型也可以在系统下直接运行。下面22秒的视频演示了创建和运行Zhangsan这个模型。

也可以在代码中使用模型,如设置模型的属性和执行模型的行为等。
import org.xmeta.Thing;
import org.xmeta.World;
import org.xmeta.ActionContext;
//动态模型引擎实例
def world = world.getInstance();
//模型有唯一路径,可通过路径获取模型
def person = world.getThing("Person");
//通过类模型创建对象模型
def zhangsan = new Thing("Person");
//设置模型的属性
zhagnsan.put("name", "Zhangsan");
//执行模型的行为,ActionContext是执行的上下文
zhangsan.doAction("sayHello", new ActionContext());
Copyright © 2007-2019 XWorker.org 版权所有 沪ICP备08000575号