论文部分内容阅读
面向对象编程思想的本意是将程序员的心智模型(Mental Model)与用户的心智模型统一于代码之中,为了人机之间的交互顺畅,程序员的心智模型与用户的心智模型必须彼此吻合,形成一种心灵相通。用户在界面前所做的工作,透过界面操纵着代码中的对象,如果程序能精确地实时反馈用户按自己心智模型操作所产生的程序状态,将会减少用户的失误。但现有的面向对象方法使用户的心智模型与程序员的心智模型存在鸿沟。虽然对象能够很好的反映系统结构,但不能准确的反映系统动作。 DCI作为一种新的面向对象方法,它关注于程序代码与用户心智模型的统一,期望反映出最终用户的心智模型中的角色及角色之间的交互。但在实践中因为现有的面向对象编程语言不能很好的支持角色这一模型,所以在代码中如何实现DCI是一个问题。 本课题先讨论用基于Java5平台的面向组合编程框架Qi4j和面向方面编程框架AspectJ,在现有面向对象语言上实现DCI架构。可以看出应用上述两种框架实现DCI都有一些不便之处:Qi4j中领域对象不是POJO对象,因此无法与Spring等常用的框架进行整合,同时也无法进行序列化。而在企业级软件中通常要求领域对象是可序列化的对象,以便进行分布式处理。另一方面利用 Qi4j来实现DCI的可读性比较差;AspectJ利用方面来实现角色方法,从而实现DCI,它的领域对象是可以序列化的POJO对象,同时代码的可读方面也比Qi4j强。由于AspectJ很容易与Spring等框架结合,故用AspectJ实现的DCI框架也能与Spring等框架整合。但用AspectJ实现DCI需要对领域对象进行标注,或者让领域对象实现角色接口,这样对领域对象进行了“入侵”,领域对象承担了许多原本不属于它的业务,与DCI中所提倡弱智能领域对象原则相背。 由于上述两种实现 DCI的方式都存在不足之处,本课题利用动态代理、标注等技术设计了一个新的DCI框架—DciDao,并将DciDao框架与 Qi4j和AspectJ实现DCI的方式进行了比较。通过比较可知DciDao框架解决了上述两个框架的不足之处,是一种更好地实现DCI的方式。