2011-04-20 70 views
0

假设我分别具有类A,B和C的doA(),doB()和doC()方法。 ()方法应该属于类A.它必须从类A执行。如果一个方法doA()对A负责,它存在于类B中,而不是类A中。加上B的服务。这也代表了低凝聚力和高耦合对象的耦合

我的推理是否正确?

+0

多告诉我们; doA()实际上对A类有什么作用?它是创建一个A还是消耗一个A或更新一个A还是什么? – 2011-04-20 16:34:29

+0

A类是信息专家。它是一个董事会对象。 doA()表示getSquare()方法。而B类表示Square对象。 – user478636 2011-04-20 16:39:05

回答

1

一个类有最大凝聚力如果它的所有方法都在它的所有成员变量上运行。

public class MyClass 
{ 
    private int value1; 
    private int value2; 
    private int value3; 

    public int Method1() 
    { 
     return value1 + value2; 
    } 

    public int Method2() 
    { 
     return value1 - value2; 
    } 

    // doesn't belong on this class 
    public int Method3() 
    { 
     return value3 * 2; 
    } 
} 

接头有两种形式:

  1. 一类使用另一个类的内部。这是耦合,但是在那种好它的组合物的例子在继承

实施例:

public class MyClass 
{ 
    public void Method1() 
    { 
     var c = new MyOtherClass(); 
     c.DoSomething(); 
    } 
} 
  1. 更糟的耦合是这样的,并且通常被称为Law of Demeter违反。

例子:

public class MyClass 
{ 
    public void Method1() 
    { 
     var c = new MyOtherClass(); 
     var size = c.Members.Size; 
     ... 
    } 
} 

在这种情况下,MyClass耦合不仅MyOtherClass,但结构的MyOtherClass的,这才是你遇到麻烦,你的代码变得硬脆。