动态构建系统的方法

1.类也是对象    

    XWorker的编程方法称为动态模型编程,动态模型编程实际上也是一个面向对象的编程方法,它的核心想法是类也是对象,即任何一个类也是普通的对象。

2.动态构建系统的方法

    把类看作对象是为了实现动态编程的方法,即在运行时可以添加和修改系统的功能。

2.1.系统是由各种对象组成的

    在使用面向对象的方法实现的系统里,可以认为系统是由各种对象组成的,而各种对象提供了各种功能。

2.2.动态构建系统是动态创建各种对象的方法

    在面向对象的系统里,系统是由各种对象组成的,系统的功能是由各种对象体现的,因此动态构建系统也就是动态创建各种对象的方法。

2.3.对象在运行时可以通过类实例化

    在面向对象编程方法里对象可以通过类实例化出来,比如在Java中对象可以通过类来实例化,比如存在一个User类,那么具体的对象zhangsan就可以用下面的代码实例化。

//通过new
User zhangsan = new User();

//通过类的instance()方法
User Zhangsan = (User) User.class.newInstance();

    以上实例化对象的方法,尤其是通过类的newInstance()方法可以在系统运行时调用,对象也可以在系统运行时通过实例化的方法构建出来。

2.4.动态构建类

    在动态模型编程中类也是对象,因此新的类也可以在系统运行时通过实例化的方法构建出来。有了新的类,就可以通过它在构建出新的对象。

    当类可以动态构建出来时,就实现了动态构建系统的方法。因为类是功能的定义,如果类可以在运行时构建出来,那么对象也可以在运行时通过类构建出来,从而实现系统在运行时的功能的添加和修改。

2.5.动态构建系统的可行性

    在这里如要证明以上方法是有效的,那么就需要证明理论上任何一个类都可以在运行时构建出来。XWorker的动态模型编程方法是有效的,因为它找到了一个类的类,即找到了一个任何类的类的定义,从而任何类理论上在运行时都可以被构建出来。

3.类的类

    这里讲述下XWorker的动态模型编程中的类的类是如何发现的,而发现过程其实也是证明过程。

3.1.用XML来表示对象

    在这里我们首先假设任何对象都可以用XML来表示。XWorker的动态模型编程方法中对象是模型,而模型是像XML这样的结构化的数据。

3.2.重新定义XML的结构

    我们以最简单的方式重新定义XML的结构,在新的XML的结构里只描述XML的属性和节点的名字,即使用<node name="xxx"/>来表示节点名,使用<attribute name="xxx"/>来表示XML节点中的属性的名字。

3.3.计算任意XML的结构的结构

    如果我们使用3.2中的XML的结构定义,去计算任何一个XML(这里实际限定为只有节点和属性的XML)的结构,那么可以发现任意XML的结构的结构是唯一的。

    比如下面的XML。

<Person name="zhangsan" age="40">
    <Child name="xiaoming" age="10"/>
</Person>

    它的结构如下。

<node name="Person">
    <attribute name="name"/>
    <attribute name="age"/>
    <node name="Child">
        <attribute name="name"/>
        <attribute name="age"/>
    </node>
</node>

    再计算上面的结构的结构,如下。

<node name="node">
    <attribute name="name"/>
    <node name="attribute">
        <attribute name="name"/>
    </node>
    <node name="node">
        <attribute name="name"/>
        <node name="attribute">
            <attribute name="name"/>
        </node>
    </node>
</node>

    随意选择任意一个其它的XML,通过计算它的结构的结构,都可以发现结果类似于上面的最后的那个XML,它的每一层节点都是相同的,不同的XML结算出来的结果只是重复深度次数不同。

    如果把上面的XML的结构的结构无穷迭代的计算下去,会得到一个每层节点都相同的,有无限层子节点的XML,我们可以把它作为任何一个XML的结构的结构,它也是唯一的。

3.4.XML的结构和类

    XML的结构可以起到类的作用,在实际使用中也可以通过XML的结构来编辑出具体的XML实例来,所以以上方法实际上也找到了一个任意类的类。

 

Copyright ©  2007-2014 XWorker.org  版权所有

沪ICP备08000575号