Сцепление объектов - PullRequest
       12

Сцепление объектов

0 голосов
/ 20 апреля 2011

Предполагая, что у меня есть методы doA (), doB () и doC () классов A, B и C соответственно.

Чем, если я не ошибаюсь, метод doA () должен принадлежать классу A. Он должен выполняться из класса A. Если метод doA (), который отвечает за A, существует в классе B.A связан с услугами B.Это также означает низкую когезию и высокую степень связи

, верны ли мои рассуждения?

1 Ответ

1 голос
/ 20 апреля 2011

Класс имеет максимальное сцепление , если все его методы работают со всеми переменными-членами.

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, и именно здесь вы столкнетесь с проблемами, и ваш код станет жестким и хрупким. *

...