Winform 巧用组合界面组合,实现业务解耦和复杂界面呈现

来源:互联网 发布:谷歌人工智能 开源 编辑:程序博客网 时间:2024/06/03 15:57

在进行业务建模时,一般是从业务层开始,构建业务需求,在业务需求的基础上,进行模块抽象,转化成对应的设计类图、对象图等,在此基础上向前,设计对应的人机体验界面,向后,构建对应的存储。

前端界面和后端存储,忠实的服务于业务模型,但是一般在一个业务点上,会由多个类图互相关联,也即不同的对象组合互相协作。在业务数据处理上,对象之间通过消息通信,达到互相之间的边界隔离,但在界面呈现上,我们需要给用户一个尽可能的直观呈现。

下面第一张是业务类图,第二张是基于业务类图,构建的人机交互界面,我们可以看到第一张的类图的关联关系,严格的在第二张的人机界面图中表达出来了。

但是业务数据的实现中,我们可以利用类的关联性对业务的内外边界进行解耦,反映到代码层面,就是每一个类的代码各司其职,只在关联点上做交互。但是反映到界面部分的编码时,为了达到一个好的用户体验,我们需要把所有的模块呈现,尽可能的在一个界面,按照人的组织思维方式展现出来。一个界面去实现几个业务类数据的展现和编辑,这势必会造成这个界面的控件很多,代码很复杂。

有没有一种办法,能像业务数据模型一样,各个业务数据对应的界面,还是在独立的界面上展示,按照业务数据的关联关系,在界面上搭建起桥梁,最后组合起来实现对应的界面功能。

复合界面只作为承载容器,把其他界面的占位关系表达出来即可。

基于此种思路,利用Winform的MDI复合窗口编程,我们试着在复合界面中,只添加对应的占位Panel,而真正的呈现界面则通过子窗口在父容器中的呈现而实现。



       图 1  业务类图


                                          图2 最终人机交互界面图


上述复合窗口,实际界面代码层面,分成了四大块,第一部分是框架容器,第二部分是主界面,第三部分是次级界面,第四部分是次次级界面,好了上图:


下面有四张图,共同组合成了上面图2 中的复杂交互图。


下面四张图中,图1的Panel用于存放图2 的窗口界面,图2 中红色标注的Panel容器,用于存放,图3的窗口界面,同理图3的再存放图4的界面。

每一级界面其实表达了对应的业务处理点,通过业务数据模型中间的关联关系做数据模型的衔接,数据模型通过绑定数据源与界面部分隔离。

写了这么多,废了这么大的劲,把界面按照业务模型的组织关系拆开,目的是什么,目的是解耦,我们通过数据对象图谱的灵活组合可以组合出不同的业务逻辑,同理通过不同的界面组合实现不同的人机交互操作,还有一点,因为解耦,单个界面的编码基本都简单化了,没有太多的复杂代码,实现了界面的重用。

在一些主从关系等图谱中,大量用到了这种组合界面呈现。


1、

2、


3、

4、




补充几个类似效果的复合界面:


主从关系复合界面,此界面由三个独立界面组成


以树为父节点的主从界面:



复合树界面


原创粉丝点击