java - 松耦合-封装的区别

标签 java oop encapsulation coupling

据我所知,到目前为止,我认为耦合与两个或多个类“互连”的程度有关。换句话说,一个类在何种程度上使用其他类的方法或变量。我们设计良好的软件系统的目标当然是保持低耦合(松散)。

我目前正在读一本书,其中明确指出,松散耦合的目标是通过设计系统来实现的,因此每个类仅使用其他类的API(公共(public)方法),而不直接使用它们的实例变量。因此,实例变量必须是私有(private)的。如果这就是重点,那么松耦合和强封装之间有什么区别?就我而言,后者指的是封装。关于 OO 软件开发的上述概念,实际上什么是正确的?

最佳答案

松耦合不仅仅是使用公共(public) API,它还是一种理解该 API 的能力,而不依赖于特定的实现。它还包括限制跨实现差异的依赖代码所需的更改量。

封装不仅仅是禁止直接属性访问。它还包括确保内部数据不会以可能导致意外行为的方式暴露(例如,返回内部结构的防御副本),并确保正确隔离行为,而不仅仅是数据,责任落实到位。

关于java - 松耦合-封装的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633524/

相关文章:

class - Kotlin 值与赋值中的引用

oop - 迭代具有不同属性的子类

java - java中静态私有(private)类的问题

java - 为嵌套命名空间中的 Java 类指定别名

java - 高度 MapFragment 布局不起作用

java - 浏览器自动检测 utf-8,希伯来语

java - @Schedule 不在固定时间触发Service

c++ - C++中的单例实现

java - Java封装线程安全代码的最佳实践是什么

c# - 封装不是很可笑吗?