1

您将如何定义以下代码?

a) 高凝聚力

b) 低凝聚力

我会说高,因为takeAndGlue()即使用 2 种单独的方法调用 2 件事,它们stackTrace也是可追溯的。

public class Assembler()
{
    public void take()
    {
        System.out.println("Take the thing");
    }
    public void glue()
    {
        System.out.println("Glueing the thing");
    }
    public void takeAndGlue()
    {
        take();
        glue();
    }
}
4

3 回答 3

1

维基百科说..

应用于面向对象编程时,如果为给定类服务的方法在许多方面趋于相似,则称该类具有高内聚性。

在你的例子中,这三个方法都在做与汇编相关的工作,这个类可以说具有很高的内聚性。

于 2013-08-30T08:35:04.710 回答
0

This is an example of low cohesion:

class Cal
{


     public static void main(String args[])
     {

          //calculating sum here
          result = a + b;
          //calculating difference here
          result = a - b;
          //same for multiplication and division
     }
}

this is an example of High cohesion:

class Cal
{

     public static void main(String args[])
     {

          Cal myObj = new Calculator();
          System.out.println(myObj.SumOfTwoNumbers(5,7));
      }


     public int SumOfTwoNumbers(int a, int b)
     {

          return (a+b);
     }

     //similarly for other operations

}

But high cohesion implies that the functions in the classes do what they are supposed to do(like they are named). And not some function doing the job of some other function. So, the following can be an example of high cohesion:

于 2013-08-30T08:32:24.497 回答
0

此类显示低内聚性,因为 take() 和 glue() 可以单独调用,但如果顺序不正确,则没有任何意义。换句话说:take()、glue() 不应该公开的。

于 2013-08-30T08:17:20.790 回答