Page 89 - 4190
P. 89
об’єктів, які вони використовують за умови, що всі вони мають очі-
куваний клієнтами інтерфейс;
2) клієнту не обов’язково потрібно “знати” про класи, за допомо-
гою яких реалізовані об’єкти. Клієнтові відомо тільки про абстракт-
ний клас (або класи), що визначає інтерфейс.
Ці переваги настільки суттєво зменшують число залежностей між
підсистемами, що можна навіть сформулювати принцип об’єктно-
орієнтованого проектування для повторного користування: програ-
муйте згідно з інтерфейсом, а не з реалізацією.
Не задавайте змінні як екземпляри конкретних класів. Замість
цього дотримуйтесь інтерфейсу, визначеного абстрактним класом. Це
одна з ключових ідей. Звичайно, де-небудь у системі доведеться ін-
станціювати конкретні класи, тобто визначати конкретну реалізацію.
Якраз це і дозволяє зробити породжувальні патерни: абстрактна фаб-
рика, будівельник, фабричний метод прототип та одинокий. Абстра-
гуючи процес створення об’єкта патерна, надають різні способи про-
зоро асоціювати інтерфейс з його реалізацією в момент інстанцію-
вання. Використання порожуючих патернів гарантують, що система
написана в терміни інтерфейсу, а не реалізації.
Механізм повторної реалізації. Більшості проектувальників ві-
домі концепції об’єктів, інтерфейсів, класів і успадкування. Склад-
ність в тому, щоб застосувати ці знання для побудови гнучких про-
грам, що повторно використовуються. За допомогою патернів проек-
тування це можна зробити простіше.
Успадкування і композиція. Два найбільш поширені прийоми
повторного використання функціональності в об’єктно-орієнтованих
системах – успадкування класів і композиція об’єктів.
Як відмічено вище, успадкування класу дозволяє визначити реалі-
зацію класу в термінах іншого. Повторне використання завдяки поро-
дження підкласу називають ще прозорим ящиком (white-box reuse).
Такий термін підкреслює, що внутрішня будова батьківських класів
видима для підкласів.
Композиція об’єктів - це альтернатива успадкуванню класів. У
цьому випадку нову, більш складну функціональність отримують
шляхом об’єднання композиції об’єктів, для композиції потрібно,
щоб об’єкти, які об’єднуються, мали чітко визначені інтерфейси. Та-
кий спосіб повторного використання називають чорним ящиком
(black-box reuse), оскільки деталі внутрішньої будови об’єкта зали-
шаються закритими.
89