将对这些数据进行操作的方法的数据放入一个类中的机制称为封装。不属性依赖注入违反封装原则吗?
但是要遵循Open/Closed
原则,Dependency injection
是通过暴露公共属性来实现的。
在这种情况下封装&依赖注入似乎相互矛盾,不是吗?
将对这些数据进行操作的方法的数据放入一个类中的机制称为封装。不属性依赖注入违反封装原则吗?
但是要遵循Open/Closed
原则,Dependency injection
是通过暴露公共属性来实现的。
在这种情况下封装&依赖注入似乎相互矛盾,不是吗?
这里有两个不同的事情需要考虑。让我们用一个简单的“Person”例子。
一个人的属性可能包括firstName,lastName,dateOfBirth等等。为了保持封装,这些可能是私有的。如果你需要这个人的年龄,你将不得不要求Person对象给你年龄,并且它会使用它的私人约会来计算年龄。这可以防止在系统中的许多地方复制人的年龄的逻辑,如果dateOfBirth是公开的,可能会受到鼓励。
Person对象也可能依赖于其他对象。这个人不是自己创建这些对象,而是依赖系统中的其他实体来创建依赖关系并将它们传入.Person对象可能公开属性来保存这些依赖关系(或设置依赖关系的方法) - 这些不是一个人的属性,他们是一个人的依赖。
这实际上是另一个只在一个地方拥有逻辑的例子 - 系统中有一个可以创建依赖关系的“事物”,而不是有许多对象都为自己创建依赖关系。
第Encapsulation
并不意味着没有公共接口。
Encapsulation
意味着只有通过特定的公共接口访问私人成员。
依赖注入通过public
设置器“注入”所需的对象。
当你说“注入鼓励我们公开数据”时,你是什么意思? – tbsalling