MVC架构下各层接口的设计问题
首先,是Dao层接口的设计,究竟应该从业务的角度一个功能对应一个方法呢?还是单纯从数据库的角度做成增删改查的工具呢?这两种我都尝试过,哪种设计更合理我到现在仍摇摆不定。
或许文字描述不大清楚,就举个例子吧:
比如要做一个用户管理的功能,除了增删改查外,还有锁定/解锁、修改密码、部门调动……从业务的角度看这是几个不同的功能,每种功能对应一条sql语句。但是从数据的角度其实都是update单条数据的操作,只需要写成一个方法,Service层要修改哪个字段就传哪个字段就可以了。
第二,是关于Service层接口的设计,传入参数方面是统一使用实体对象传参合理些,还是采取语义化的传参合理些呢?这个问题我也是斟酌再三无法确定。
或许文字描述不太清楚,就举个例子吧:
还是以用户管理为例,如果采取实体对象传参,则无论修改密码、还是锁定/解锁,传参都是用户实体。而如果采取语义化的传参,那么修改密码的参数是(Integer id, String password),锁定/解锁的参数是(Integer id, Boolean locked)。
附:希望大家从MVC层次职责的划分、使用起来的方便性、更好的应对需求变更、设计理念等方面考虑考虑这个问题。觉得“反正都能把功能实现,就可以交差了,管他那么多干嘛”的无所谓态度的就不用来搅局了。