目标:如题(.net中)
要求:1,三层(表现层,控制层,数据层),每一层都有明确的分工。
2,表现层不能直接请求数据层。
3,尽量把方式设计提炼出来(异常处理,事务处理和Log处理方式)
我设计的图如下:
说明如下:
一 图例说明:
1,黄色部分分别是表示层和数据层的抽象表示。
2,淡蓝色部分是项目需要具体实现的。
3,紫色部分是预留的接口,如果以后项目有需要,可以个别实现。
二 几个类的功能说明如下:
1,RequestData:表现层传递给控制层的请求数据。
2,Model:控制层计算的结果,从数据库检索,或者程序计算的结果放在KeyValueCollection对象中,同时如果表现层有相关性check,或者数据库check,这些check的结果作为Model成员(errData)也进行返回。
3,ActionType:静态类,定义表现层所需要的动作。
4,IProjectSupporter:个别业务共通的接口,在selfSupporter中进行实现,或者可以在
5,RequestHandlerFactory:根据表现层的画面ID(view层在初始化时候,读取配置文件到Appcontext中)获取RequestHandler对象,是RequestHandler类的工厂。
6,RequestHandler:实现表示层的具体控制流程,它提供表现层调用控制层的统一接口方法(DoEvent)。SelfRequestHandler根据ActionType实现DoFlow方法,DoFlow方法实现了表现层到控制层的具体控制。
7,ConcretController:提供设置和读取Model的方法,SelfController继承此类。SelfController是具体业务方法的门面。
8,PreProcessor和PostProcessor,根据现有业务,可以提供LOG操作的接口,如果实现此类,则具体的业务方法不需要关注LOG。这里存在分歧,如果写LOG在表现层实现,就不需要此类。但是可以作为接口在此保留。
9,这里的IMessenger主要是为了实现表现层和控制层的交互,比如,在一大段的事务中间,表现层要询问是否要做某件事情,如果要做,则控制层继续事务处理。当然,这里可以用事件来实现。
请大家多多指教。