边界类,控制类和业务接口的使用,边界类,控制类和业务接口的关系?
问题概述:
思考1:见类图1(http://blog.dreambrook.com//images/blog_dreambrook_com/justin/93/r_1.gif)的情况下,每个边界类(ListForm和DetailForm)分别对应各自的控制类(ListFormController和DetailFormController)每个控制类又都实现了同一个业务接口。该业务接口中分别有A,B,C,D,E,F六个服务(方法),其中A,B,C是为边界类ListForm服务的,而B,C,D是为边界类DetailForm服务的。
思考2:见图2(http://blog.dreambrook.com//images/blog_dreambrook_com/justin/93/r_2.gif)的情况下,每个边界类(ListForm和DetailForm)也分别对应各自的控制类(ListFormController和DetailFormController),但是每个控制类分别实现了不同的业务服务接口,左边的接口中有A,B,C专门为边界类ListForm服务的方法,右边的业务接口有D,E,F专门为边界类DetailForm服务的方法。
思考3:见图3(http://blog.dreambrook.com//images/blog_dreambrook_com/justin/93/r_3.gif)的情况下,每个边界类(ListForm和DetailForm)同时对应一个控制类,该控制类实现了一个业务服务接口。该业务接口中分别有A,B,C,D,E,F六个服务(方法),其中A,B,C是为边界类ListForm服务的,而B,C,D是为边界类DetailForm服务的。
这个问题应该算是个架构设计上的问题吧,
思考1的情况是我现在的做法,但是因为两个控制类实现的是一个总的业务接口,所以每个控制类里都有多余的方法体,一直觉得这样很别扭;
思考2的情况是我的第一个想法,为了保证控制类暴露给边界类的都是有用的方法,所以将总的业务接口拆成了两个业务接口,而两个接口也都是在一个业务服务层中的类来实现的。
思考3的情况是另一个想法,两个边界类共用同一个控制类,后台实现同一个总的业务接口,这也同样给不同的边界类暴露了他们不需要的方法,只是比思考1少用了一个控制类而已。
就这个问题跟同事好一番讨论后,没有一个统一的看法,我自己觉得思考2的实现最好(但是这种方法定义了多个业务接口,这样似乎也不太好!?),其次是思考3,最后才是现在的做法思考1。
也不知道我叙述清楚没有,大家对照类图和我的描述,应该能看懂吧……
我这方面的设计经验还不是很丰富,针对这个问题,各位同仁有什么不同的看法,欢迎大家来一起来讨论讨论。
Justin
MSN:xiaoliang203@hotmail.com