有关数据层模式的疑问?
在PEAA中,作者讲解了表入口模式和行入口模式,但是在实际中应用时机怎么区分,什么情况下使用哪一种?还有,活动记录又和前两者有何区别?
再者,通过书中的例子,一个表入口类的方法中需要提交大量参数(表中几乎每个列都在方法参数列表中出现),我觉的这样做相当笨拙,肯定好多人觉可以将参数列表替换为实体对象,传递给数据层,但是这样的实体对象大多都会出现在分层结构中的每一层,又和模式原则相违背,我迷惑了
问题点数:0、回复次数:1Top
1 楼zengjd(一)回复于 2005-02-04 14:01:37 得分 0
首先你要明白什么是入口模式:
表数据入口是充当数据库表的入口,一个表入口实例处理表中所有的行.所以,简单的说,如果你用想表摸快这样的模式,那最好的选择就是表数据入口,表数据入口产生记录集,由表摸块来处理.其实如果你用表摸快模式来处理业务逻辑,除了表数据入口模式,你也别无选择,除非不用入口模式.
行数据入口是数据库表中单条记录的入口对象,简单的情况下,他就象一个只有数据库访问逻辑而没有任何业务逻辑的领域对象,你可以这么想,对于分析模型中的实体对象,你有两个对象来实现他,一个是封装业务逻辑的实体类,另一个就是业务逻辑的实体对象同数据库交互的入口对象,这个入口对象就是行数据入口.当然这是在实体类同数据库表一一对应的情况下你可以这么想.其实行数据入口的最好搭配是事务脚本模式.但业务逻辑复杂了,你可一对事务脚本重构,形成活动记录.
现在你知道什么是活动记录了吧.就是封装了数据库表中的每行的一个对象,并在这个对象中封装业务逻辑,当然最好的情况下是数据库表和业务实体类一一对应的请况下使用.否则最好用领域模型和数据映射器.
至于你说的参数传递的问题,你可以用记录集和实体对象的方式来解决,无论那种方式都没有违背模式的原则.
Top




