这些术语之间的确切含义和关系是什么。很多人看起来很混淆他们。
我的想法是,关注的分离是你通过封装获得的。
松散耦合在某些博客中与关注点的分离相混淆,而在其他博客中,其他只是一种分离,而不是彼此不了解的组件。
Spaghetti代码是纠结的代码。因此,不遵循以上3个概念可能会导致意大利面条代码。
这是对的吗?
答案 0 :(得分:1)
封装和松散耦合在很大程度上是抽象的想法,也就是说它们可能不像你所说的那样 精确 含义。因此,对于微妙的案例,它通常可归结为意见。但是,这是它的主旨......
封装只是意味着保护(封装)不应该从类外部访问(或不需要访问)的类成员。它允许您准确定义变量/方法应该如何与之交互。例如;
class A{
private int a;
public void setA(int a){
this.a = a;
}
}
class B{
public int b;
}
在课程A
中,a
变量已封装。您只能通过已定义的方法从此对象实例外部设置a
,这样我们就可以准确定义如何设置它。这也意味着您无法检索a
的值,因为我们尚未定义允许它的方法。
相反,在课程B
中,b
是公开的,来自课外的任何人都可以随心所欲地做任何事情。哪个,封装得不是很好。将Encapsulation视为具有由保护性胶囊包围的成员,这确保了成员仅以良好预定义的方式进行交互。
链接:
耦合指的是两个类彼此绑定的程度,或者知道彼此的工作。如果没有其他类的存在,两个具体的类无法工作,那么它们被认为是紧密耦合的。松散耦合可能更像是一个抽象概念而不是封装,但它们确实相互关联。例如,如果是一个班级'如果变量没有封装,那么任何使用它的类如果使用这些变量就会被称为紧密耦合。
class A{
public int a;
}
class B{
public static void main(String[] arg){
A ay = new A();
ay.a = 7;
}
}
在上面的示例中,类A
和B
是紧密耦合的,因为B
深入了解A
的变量状态,如果是{{}}则无法运行{1}}不存在。
wiki在Loose耦合上说了以下内容;
当依赖类包含指针时,会发生强耦合 直接到提供所需行为的具体类。该 依赖不能被替换,或者它的签名"改变了,没有 要求改变依赖类。松散耦合发生时 依赖类包含一个只能指向接口的指针,它可以 然后由一个或多个具体类实现。
链接: