使用"单一责任原则"迫使我的容器拥有公共制定者

Ign*_*cia 8 c# design-patterns solid-principles

我正在努力按照SOLID原则进行设计.我发现当你使用"单一责任原则"(SOLID的S)时,你通常必须在数据容器和数据处理器之间拆分类.例如,如果我有一个具有5个属性的类人员从DB读取而不是将所有内容都放在一个类中,我创建一个带有属性的Person类和另一个从数据库中读取该信息并创建Person的PersonReader类.

如果我这样做,我必须打开Person属性,以便PersonReader可以访问它们,但是我的封装比将所有内容放在黑盒子中并使属性只能读取更少.

我错过了什么或这是这个原则的缺点吗?

提前致谢

编辑:我已经将人作家改为一个人读者,因为没有必要在开始时公开财产制定者.

Jef*_*nal 3

大多数数据访问策略(ORM 技术)都涉及您所描述的那种妥协。侵入性最小的实体在需要时(例如,当不存在公共设置器时)使用反射(或内省等)来填充实体。

话虽如此,如果您的实体只是数据容器(如贫血领域模型中的那样),那么单一职责原则不应该让您真正关心,因为您的对象没有复杂的逻辑,这些逻辑会被破坏(或干扰) ) 数据访问代码。