解耦合设计的一个困惑,请大家讨论
我在设计中遇到一个问题!而且我想或许大家也会有类似的困惑,还是我多想了抑或是孤陋寡闻。具体问题如下,简化了分析模型
利用ctrl(action)接受客户端提交的请求并分配到不同的DS(DOMAIN SERVICE),然后DS调用BO,BO在调用DAO来完成持久化!粗略地看看是没有太大的问题,耦合度也可以控制在一定程度,但是我有个问题出在哪里呢?我觉得BO是比较容易变动的东西,基于将变动与不变分离的原则,我希望可以设计一个这样子功能的bo。利用最简单的工厂模式,首先定义好一个interface在里面定义特定BO的所有行为,然后定义一个abstract class 里面定义BO的所有属性以及get/set方法,当然他继承前面的interface,然后再根据不同功能,根据职责分配的方式,以不同的实做类来实现不同功能(继承前面的abstract class),但是因为对DS来讲的话,我希望降低他与BO的耦合度,在DS来说我希望他只能通过interface访问(利用工厂实现)。表面看好象符合我要求了,也满足了提供内聚性降低耦合度的想法,但事实上大家看,如果我的BO 有三个功能的话那么在interface中必须定义三个行为才能通过接口统一访问,不然对DS来讲提高了耦合度(假如有多个interface的话),那么不考虑abstract class对于每个实做类来讲,并没有达到我想要的结果,为什么,因为内聚性并未提高,他得到了自己不想要的行为(例如实现新增,结果还有修改和查询也随继承得到了),这违背了我的初衷!我目前使用了一种妥协的办法,就是在实现类中对非本类功能行为的实现,全部都是直接抛出异常,但是非常遗憾,这比我理想的情况相差实在太远,因为这样子一来根本就不是一个良好的设计!我一直被这个问题困扰,不知道在坛的高人有没有什么很到的解决方案,或者大家一起来讨论一下此问题,小弟不胜感激!