[转载]一次进销存软件架构的实践2——业务外观层设计 – Rick Carter – 博客园.
1.结构
根据经验可以发现一个界面总是一块一块的,每一块里都是一些基本控件(按钮、文本框或者日期控件等)或者是一个网格控件和树形控件等,如果每块 称为区域,里面的成为项,这样我们可以把界面抽象出两个基类:区域和项,从区域派生出的其他区域分别用来创建编辑区域、网格区域和树形区域,编辑区域中的 项由项这个类中的类型属性通过分支语句去创建。
然后就是各种类型的窗体包含的区域不同,那就再加一个外观的类,它有个属性存放所有的区域,从外观派生出的类定义各种可能的区域。而各区域的位置等信息是由窗体去做的。
这些类还有其他的职责,从外观派生出的类负责各区域的交互等,区域负责数据绑定、固定的事件、数据初始化等,项也有数据绑定的职责,外观类的职责就是多很多了,主要一个职责是运行机制。
事实上我不是一开始就这样思考的,我是希望各种控件等都能够用统一的方式创建、绑定、验证和权限,所以才想到有基类抽象他们,才有了项,但单有项还不能完成一个复杂的界面,所以一步一步的思考就成上面描述的结构了。
2.运行机制
这里简单列下运行时候要做的事。
1.预初始化
一些初始值的设置和合法性验证已决定是否继续等等必须放到窗体打开前的工作。
2.加载数据
通过外观类中的业务对象所实现的接口方法加载数据存储到外观类的dataset类型的数据属性中。
3.初始化权限
设置权限对象中一些与数据库中的数据有关的属性。
4.创建外观
这个时候窗体中的各控件就创建了。
5.初始化验证
同初始化权限,我的验证和权限用的是同样的一些类,我将他们抽象成了相同的东西。参考浅谈MIS系统架构,这块有些复杂但我不准备说了,用到了一个MB.JsEvaluator.dll来完成动态条件表达式。
6.结束初始化
7.绑定数据