我读过关于坚持无知原则的文章,电子书给出了一些违反这一原则的例子,但我不明白。你能帮我解释一下吗?
Some examples of violations of this principle include:
• A required base class
• A required interface implementation
• Classes responsible for saving themselves (such as the Active Record pattern)
• Required default constructor
• Properties requiring virtual keyword
• Properties forced to use certain types (for example, collection properties must expose
ICollection, not just IEnumerable)
• Persistence-specific required attributes发布于 2017-11-27 07:57:59
这看起来像是“不要使用ORMs列表”,而不是其他任何东西。因为这些“违规”大多是使用像nHibernate和实体框架这样的ORM的要求。
负责保存自己的类(例如活动记录模式)
这一点是显而易见的,因为知道如何坚持自己的阶级并不是坚持不懈--无知。以及ORM是如何在Rails中工作的(从我记忆中开始)。
*所需基类
在实体框架的旧版本中,每个要持久化到数据库的实体都必须继承实体框架的基类。这受到了广泛的批评,人们并没有真正使用它。
所需的默认构造函数·属性需要使用特定类型的虚拟关键字·属性(例如,集合属性必须公开ICollection,而不仅仅是IEnumerable)
这是使用nHibernate (以及实体框架的“更新”版本)使类可持久化的要求。这是因为nHibernate创建一个包装类并向所有属性添加更改监听器,从而要求它们是虚拟的,并且还需要能够创建类本身,因此需要无参数构造函数。
大多数人认为nHibernate强加的需求是必要的,因为唯一的选择是推出您自己的持久性层,或者将持久性层中的实体复制为愚蠢的DTO。
https://softwareengineering.stackexchange.com/questions/361305
复制相似问题