Page 89 - 4190
P. 89

об’єктів, які вони використовують за умови, що всі вони мають очі-
            куваний клієнтами інтерфейс;
                  2) клієнту не обов’язково потрібно “знати” про класи, за допомо-
            гою яких реалізовані об’єкти. Клієнтові відомо тільки про абстракт-

            ний клас (або класи),  що визначає інтерфейс.
                  Ці переваги настільки суттєво зменшують число залежностей між
            підсистемами,  що  можна  навіть  сформулювати  принцип  об’єктно-

            орієнтованого  проектування  для  повторного  користування:  програ-
            муйте згідно з інтерфейсом, а не з реалізацією.
                  Не  задавайте  змінні  як  екземпляри  конкретних  класів.  Замість
            цього дотримуйтесь інтерфейсу, визначеного абстрактним класом. Це

            одна з ключових ідей. Звичайно,  де-небудь у системі доведеться ін-
            станціювати конкретні класи, тобто визначати конкретну реалізацію.
            Якраз це і дозволяє зробити породжувальні патерни: абстрактна фаб-

            рика, будівельник, фабричний метод прототип та одинокий.  Абстра-
            гуючи процес створення об’єкта патерна, надають різні способи про-
            зоро  асоціювати  інтерфейс  з  його  реалізацією  в  момент  інстанцію-

            вання. Використання порожуючих патернів гарантують, що система
            написана в терміни інтерфейсу, а не  реалізації.
                  Механізм повторної реалізації. Більшості проектувальників ві-

            домі  концепції  об’єктів,  інтерфейсів,  класів  і  успадкування.  Склад-
            ність в тому, щоб застосувати ці знання для побудови гнучких про-
            грам, що повторно використовуються. За допомогою патернів проек-
            тування це можна зробити простіше.

                  Успадкування  і  композиція.  Два  найбільш  поширені  прийоми
            повторного використання функціональності в об’єктно-орієнтованих
            системах – успадкування класів і композиція об’єктів.

                  Як відмічено вище, успадкування класу дозволяє визначити реалі-
            зацію класу в термінах іншого. Повторне використання завдяки поро-
            дження підкласу  називають ще прозорим ящиком (white-box reuse).
            Такий термін  підкреслює, що внутрішня будова  батьківських класів

            видима для підкласів.
                  Композиція  об’єктів  -  це  альтернатива  успадкуванню  класів.  У
            цьому  випадку  нову,    більш    складну  функціональність  отримують

            шляхом  об’єднання  композиції  об’єктів,  для  композиції  потрібно,
            щоб об’єкти, які об’єднуються, мали чітко визначені інтерфейси. Та-
            кий  спосіб  повторного  використання  називають  чорним  ящиком

            (black-box  reuse),  оскільки  деталі  внутрішньої  будови  об’єкта  зали-
            шаються закритими.

                                                              89
   84   85   86   87   88   89   90   91   92   93   94