Зчеплення, спрощене
Коли об'єкт викликає метод, властивість тощо іншого об'єкта, ми кажемо, що об'єкти з'єднані. Ми називаємо це з'єднанням, тому що тепер виклик нічого не може змінити щодо власного методу / опори. w.out ламаючи абонента .
Таким чином, чим більше з'єднання - методів, реквізитів. - тим складніше змінити код виклику, не порушивши весь код, який його використовує.
обмірковуючи з'єднання
- Посилаючись навіть на одну опору, метод з'єднує два об'єкти.
- Очевидно, з'єднання необхідне для створення програмного забезпечення.
- Враховуючи характер з’єднання «крок блокування», ми хочемо як обмежити, так і ізолювати його. Ця мета просто іде разом із загальним розробником програмного забезпечення. принципи.
- Чим менше об’єктів, з якими нам доведеться поговорити, тим нижня муфта.
- Якщо мені потрібно зробити, скажімо, 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
- наскільки б складна його структура.
Найменше знань аж донизу
Ми від'єднали свогоEEEEEEEY від Person
і Address
, в ідеалі, нам слід продовжувати застосовувати найменше знань, додаючи пропуск через властивості, такі, що Employee
лише спілкуються Person
і Person
лише розмовляють зAddress