动态模型编程方法简介

1.运行时的模块化编程方法

动态模型是一个可以在系统运行时编程的模块化的编程方法。动态模型编程起源于框架编程,它把框架的配置文件变成了可执行的对象,从而形成了一个使用配置来编程的编程方法。

2.演示

动态模型一般在系统运行时编程,因此演示主要是以视频为主。XWorker是动态模型的开发工具,一般使用XWorker来演示。XWorker也是使用动态模型编写的,因此XWorker本身就是一个动态模型的示例。

2.1.配置对象化

动态模型是从框架编程演化而来的,它把框架的配置当作可执行的对象,配置就是可执行的程序。

比如上图中的定时任务就是一定典型的数据库表的映射配置。当配置对象化后,配置就有了行为,如下面的GIF中执行定时任务的query方法。

2.2.快速编程

模型是框架的配置,容易使用,当模型越来越多时,就可以很容易的编写出复杂的应用了。比如使用上面的定时任务模型结合SWT数据对象编辑器控件就可以直接编写出数据管理界面了。

 2.3.实时编程

实时编程是指在系统运行时的编程。动态模型是从框架编程演化而来,模型是框架的配置,模型是数据,而框架的解释程序一般是预先写好的(实时编写框架可用脚本),所以可以在系统运行时编程。

比如下面的GIF视频里,先运行了SWT窗口,然后再修改模型,可以看到模型修改后实时修改了窗口。

2.4.积累和迭代

动态模型把框架的配置对象化了,动态模型还是一个完整的基于数据的面向对象的编程方法。使用动态模型不仅可以把各种框架集成在一起,还可以在它们的基础上继续编程。

比如下图的模型程序把SWT、WEB、Echarts等集成在了一起。

2.5.可编写多种应用

2.5.1.编写WEB应用

动态模型可以编写WEB应用。

2.5.2.窗口应用

XWorker的界面主要是使用SWT编写的,其实动态模型还可以编写其它窗口应用,比如javafx。

2.5.3.控制台应用

下面的GIF视频是基于JLine的控制台应用。

2.5.4.游戏

 XWorker封装模型libgdx,通过模型也可以编写游戏。

2.5.5.人工智能

动态模型其实和人工智能是天生一对的。 比如下面的例子里,演示了终端和AI的结合。

3.动态模型的理论

其实动态模型是因为偷懒而写出来的,一开始并未意识到它是一个编程方法,动态模型的理论直到最近才完善。

3.1.动态模型解决的问题

可以从很多角度区解读动态模型。但从本文的角度,即动态模型使用框架编程演化而来的,动态模型解决的是框架死板的问题。

所谓框架,就是别人搭好了架子,你要使用框架,得要按别人的规定来。一方面,使用框架很方便,另一方面如果框架有问题,那么使用者可能就束手无策了。

动态模型的解决办法就是让框架的配置对象化。这里的对象化不只是让一个配置对象化,而是让一个配置中的每一个节点甚至行为都对象化。按照面向对象的理念,对象具有唯一性,即每个对象都是相对独立的。因此在动态模型里,每一个对象以及每一个对象的行为都是可修改的。

由于框架的配置是数据,可以在运行时修改。当配置全面对象化后,就有可能可以去修改框架的每一个点了。从而解决了框架的死板问题。

3.2.三层概念

动态模型的概念可以分为三层。

  • 最上层:模块化编程
    动态模型号称是一个模块化的编程方法,一方面是因为动态模型的确是从框架编程演化而来的,另一方面是因为当模型越来越多时,动态模型的编程越趋向于模块化编程。
  • 中层:动态面向对象编程
    动态模型也是一个基于数据的编程方法,但这也是逻辑上的,它是使用更底层的概念实现的。因为在动态模型的底层实现里,并没有Object和Class这样的东西。好处是对象是动态的,即对象的属性、行为和类型都是随时可变的。
  • 底层:事物和动作的抽象层
    这一层并不是有意设计出来的,动态模型是偷懒的结果,这个偷懒就是不到必要的时候不干活。换一个高级的方式说,就是一个东西是什么,在当我们需要的时候才去判断它是什么。这种做法就是认为一个东西是什么,并不是先天决定的,而是可以后期决定和改变的。比如事物这个概念就是不知道一个东西是什么的时候用的,动作就是先假设每个事物都是可以运行的。

在上面的三层概念里,单独看底层是看不出什么意义的,这也是动态模型的理论比较抽象的原因。

动态模型的理论文档,可以参看4. Dynamic Model Theory-XWorker

4.元模型和哲学

元模型是在编程时发现的一个特殊的模型,有一定的哲学意义。有兴趣者可以看看5.Meta Model-XWorker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值