0

假设我分别有 A、B 和 C 类的 doA()、doB() 和 doC() 方法。

除非我错了,否则 doA() 方法应该属于 A 类。它必须从 A 类执行。如果为 A 负责的方法 doA() 存在于 B 类中。那么 A 类与 B 的服务耦合. 这也代表低内聚和高耦合

我的推理正确吗?

4

1 回答 1

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. 更糟糕的耦合看起来像这样,通常被称为违反得墨忒耳定律。

例子:

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

在这种情况下,MyClass不仅与MyOtherClass相关,而且与 的结构耦合,MyOtherClass这是您遇到麻烦的地方,您的代码变得僵硬和脆弱。

于 2011-04-20T16:39:40.643 回答