我发现这似乎有相同的目标,两种模式 - 有什么区别?
http://martinfowler.com/eaaCatalog/dataMapper.html
http://martinfowler.com/eaaCatalog/repository.html
我发现这似乎有相同的目标,两种模式 - 有什么区别?
http://martinfowler.com/eaaCatalog/dataMapper.html
http://martinfowler.com/eaaCatalog/repository.html
[存储库是]在其中查询构造代码集中的映射层抽象的另一层。
该DataMapper
保证栅栏的DB方并不需要了解你的业务逻辑的细节和数据是如何通过你的业务对象保存在内存中,并在围栏的业务方并不需要知道数据如何被储存了。
为了说明这一点,考虑你的数据被保存在数据库作为一组行,说每排在你的店代表的项目。 在内存方面,你可能想保留这些信息不是列表StoreItem
但作为两个列表,一个是这是在股票项目,另一个是外的库存物品。 这将是DataMapper
的工作来处理一个列表,两个列表之间的过渡。
您可以通过在栅栏的业务方面增加其他对象和继承的名单复杂的事情。 该“DataMapper的”将不得不转换为并从代表到关系数据库。
在“库”提供了“SELECT * FROM表WHERE条件”功能,在业务方面。 你提供一个过滤器,它会返回该过滤器匹配对象的集合。
简言之:“的DataMapper”与单个对象的交易中,“库”与对象的集合优惠和扩展了由“DataMapper的”所提供的功能。