PersonList 与 People

程序中经常会有某个场景:

   获取某个Domain对象例如Person的集合List<Person>,遍历,对其中每个对象进行处理。例如

这样没有什么问题,但并不合理,因为对其中for循环的测试,就必须放在Service的PrintAddressOf的测试中。

其根本原因是List只是一种数据结构,而不是对象,所以很难单独测试。这是一个设计问题,比较合理的设计是引入一个People class,用来表示Person的集合,它持有Person的对象列表,这个集合上有相应的方法用来处理其中每个元素。

这样,改变Dao.GetAllPersons()返回类型为People, Service就变成

  

改变之后,就可以对原先的集合操作在People这个Domain对象上进行,而不用在上一级的Service中。

总结两点

1. PrintAddressOf()方法本身并不属于Service的行为,而是属于People的,在所有的设计中,应该将某个对象的行为放在该对象中,这样可以做最简单的测试。

2. 在方法返回某个对象的List时,应考虑是否引入该对象的集合的类,这样可以在Domain层做最廉价的测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值