📜  Java中的凝聚力

📅  最后修改于: 2022-05-13 01:54:56.726000             🧑  作者: Mango

Java中的凝聚力

Java中的内聚是面向对象的原则,它与确保一个类的设计具有单一的、重点突出的目的最密切相关。在面向对象的设计中,内聚指的是如何设计单个类。

高内聚的优点是这样的类比低内聚的类更容易维护(并且更少更改)。高内聚的另一个好处是目标明确的类比其他类更容易重用。

示例:假设我们有一个将两个数字相乘的类,但同一个类创建了一个显示结果的弹出窗口。这是一个低内聚类的示例,因为窗口和乘法运算没有太多共同点。为了使其具有高内聚性,我们必须创建一个 Display 类和 Multiply 类。 Display 会调用 Multiply 的方法来获取结果并显示出来。这种方式开发了一个高凝聚力的解决方案。

让我们了解一下高内聚程序的结构:

Java
// Java program to illustrate
// high cohesive behavior
 
class Multiply {
   
    int a = 5;
    int b = 5;
   
    public int mul(int a, int b)
    {
        this.a = a;
        this.b = b;
        return a * b;
    }
}
 
class Display {
    public static void main(String[] args)
    {
        Multiply m = new Multiply();
        System.out.println(m.mul(5, 5));
    }
}


Java
// Java program to illustrate
// high cohesive behavior
 
class Name {
    String name;
    public String getName(String name)
    {
        this.name = name;
        return name;
    }
}
 
class Age {
    int age;
    public int getAge(int age)
    {
        this.age = age;
        return age;
    }
}
 
class Number {
    int mobileno;
    public int getNumber(int mobileno)
    {
        this.mobileno = mobileno;
        return mobileno;
    }
}
 
class Display {
    public static void main(String[] args)
    {
        Name n = new Name();
        System.out.println(n.getName("Geeksforgeeks"));
        Age a = new Age();
        System.out.println(a.getAge(10));
        Number no = new Number();
        System.out.println(no.getNumber(1234567891));
    }
}


输出
25

Java

// Java program to illustrate
// high cohesive behavior
 
class Name {
    String name;
    public String getName(String name)
    {
        this.name = name;
        return name;
    }
}
 
class Age {
    int age;
    public int getAge(int age)
    {
        this.age = age;
        return age;
    }
}
 
class Number {
    int mobileno;
    public int getNumber(int mobileno)
    {
        this.mobileno = mobileno;
        return mobileno;
    }
}
 
class Display {
    public static void main(String[] args)
    {
        Name n = new Name();
        System.out.println(n.getName("Geeksforgeeks"));
        Age a = new Age();
        System.out.println(a.getAge(10));
        Number no = new Number();
        System.out.println(no.getNumber(1234567891));
    }
}
输出
Geeksforgeeks
10
1234567891

高内聚和低内聚示意图:

Java中的凝聚力

解释:在上图中,我们可以看到,在低内聚情况下,只有一个类负责执行许多不常见的作业,这降低了可重用性和维护的机会。但是在高内聚中,所有作业都有一个单独的类来执行特定的作业,这会带来更好的可用性和维护性。

高内聚和低内聚的区别:

  • 高凝聚力是指你的班级完成了明确的工作。低凝聚力是指一个班级做了很多没有太多共同点的工作。
  • 高内聚为我们提供更好的维护设施,低内聚导致难以维护、理解和降低可重用性的单一类