关注与封装的分离与松散耦合与意大利面条代码的分离

时间:2014-06-06 13:53:37

标签: java oop encapsulation

这些术语之间的确切含义和关系是什么。很多人看起来很混淆他们。

我的想法是,关注的分离是你通过封装获得的。

松散耦合在某些博客中与关注点的分离相混淆,而在其他博客中,其他只是一种分离,而不是彼此不了解的组件。

Spaghetti代码是纠结的代码。因此,不遵循以上3个概念可能会导致意大利面条代码。

这是对的吗?

1 个答案:

答案 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;
    }
}

在上面的示例中,类AB是紧密耦合的,因为B深入了解A的变量状态,如果是{{}}则无法运行{1}}不存在。

wiki在Loose耦合上说了以下内容;

  

当依赖类包含指针时,会发生强耦合   直接到提供所需行为的具体类。该   依赖不能被替换,或者它的签名"改变了,没有   要求改变依赖类。松散耦合发生时   依赖类包含一个只能指向接口的指针,它可以   然后由一个或多个具体类实现。

链接: