Муфта упрощенная
Когда объект вызывает метод, свойство и т. Д. Другого объекта, мы говорим, что объекты связаны. Мы называем это соединения , потому что теперь вызываемая не может изменить что - либо о своем собственном методе / проп. без взлома звонящего .
Таким образом, тем более сцепление - методы, реквизит. - тем сложнее изменить код вызываемого абонента, не нарушая весь код, который его использует.
созерцая связь
- Ссылаясь даже на одну проп., Метод соединяет два объекта.
- Очевидно, связь необходима для создания программного обеспечения.
- Учитывая характер связывания «шаг блокировки», мы хотим ограничить и изолировать его. Эта цель просто соответствует общей разработке программного обеспечения. принципы.
- Чем меньше объектов мы будем говорить, тем меньше связь.
- Если мне нужно сделать, скажем, 20 различных вызовов методов, связь будет ниже, если все 20 вызовов относятся к одному классу / объекту, то есть те же методы распространяются на несколько классов / объектов.
Большинство знаний вызывает сумасшедшую связь
Здесь у нас Employee
есть, у Person
которого есть «Адрес»
public class Employee {
public Person me = new Person();
}
public class Person {
public Address home = new Address();
}
public class Address {
public string street;
}
Для того, чтобы получить на улицу , я должен позвонить: myEmployee.me.home.street
. Это на 180 градусов противоположно принципу наименьшего знания. Я должен знать о внутренностях, композиционной структуры, из Employee
, Person
и Address
классов.
Этот дефектный дизайн класса вынуждает меня знать обо всех этих классах и таким образом myEmployee.me.home.street
соединяет меня (объект вызывающего) не менее чем с 3 классами - чтобы получить только одно свойство!
Наименьшее знание спасает день
Если я разговариваю только с Employee
классом, я применяю принцип наименьшего знания как таковой, и тем самым мы автоматически ограничиваем связь только с этим классом и в то же время изолируем связь с этим одним классом.
Добавляя все необходимые свойства в Employee
классе, мы фиксируем связь.
таким образом
public class Employee {
public Person me = new Person();
public string street { return me.home.street; }
}
Позволяет мне позвонить: myEmployee.street
-
- Я только "знаю"
Employee
- Я связан только с
Employee
- независимо от того, насколько сложна его структура.
Наименее Знание полностью вниз
Мы отделили myEmployee от Person
и Address
и, в идеале, мы должны продолжать применять наименьшее количество знаний, добавляя сквозные свойства, которые Employee
только говорят Person
и Person
только говорят сAddress