ger*_*s.b 4 abstract-class domain-driven-design ddd-repositories aggregateroot
对存储库和聚合的思考。文献称每个聚合都有一个存储库。
但是,如果我的聚合都是基类的子类(是一种关系,则继承不用于重用)。我是否必须为所有子类创建存储库,或者我可以为所有子类使用相同的存储库。
PaperBag paperBag = paperBagsRepository.get(paperBagId);
PlasticBag plasticBag = plasticBagsRepository.get(plasticBagId);
Run Code Online (Sandbox Code Playgroud)
或者
PaperBag paperBag = bagsRepository.get(paperBagId);
PlasticBag plasticBag = bagsRepository.get(plasticBagId);
Run Code Online (Sandbox Code Playgroud)
在应用程序级别,您通常希望每个聚合都有一个存储库。这里的动机是您试图最大限度地减少与实现细节相关的代码量。
参见帕纳斯,1972 年。
所以在客户端代码中,这种风格是首选:
PaperBag paperBag = paperBagsRepository.get(paperBagId);
PlasticBag plasticBag = plasticBagsRepository.get(plasticBagId);
Run Code Online (Sandbox Code Playgroud)
你必须这样做吗?不会。Parnas 和 DDD 警察都不会来踢你的门。但将两者分开使代码更容易更改,这是可持续成功的重要属性。