Page 95 - 4190
P. 95

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

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

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

            ткових витрат. Завдяки патернам систему завжди можна модифікува-
            ти певним чином. Кожний патерн дозволяє змінити деякий аспект си-
            стеми незалежно від усіх інших, таким чином, вона менше підлягає

            впливу змін конкретного виду.
                  Розглянемо деякі типові причини перепроектування, а також па-
            терни, які дають можливість цього уникнути:

                  1)  при  створенні  об'єкта  вказують  клас.  Вказівка  імені  класу
            прив’язує до конкретної реалізації, а не до конкретного інтерфейсу.
            Це  може  ускладнити  зміну  об’єкта  в  майбутньому.  Щоб  позбутися

            такої проблеми, необхідно створювати об’єкти безпосередньо. Пате-
            рни проектування: абстрактна фабрика, фабричний метод, прото-
            тип;
                  2)  залежність  від  конкретних  операцій.  Вказуючи  конкретну

            операцію, можна обмежити єдиний спосіб виконання запитів. Якщо
            не включати запити в код, то буде простіше змінити спосіб задово-
            лення запиту як на етапі композиції, так і на етапі виконання. Патер-

            ни проектування: ланцюжок обов’язків, команда;
                  3) залежність від апаратної і програмної платформи. Зовнішні
            інтерфейси  операційної  системи  та  інтерфейси  прикладних  програм
            (API)  різноманітні  на  різних  апаратних  і  програмних  платформах.

            Якщо програма залежить від конкретної платформи, то її буде важко
            перенести на інші. Навіть не «рідній» платформі таку програму важко
            підтримувати. Тому при проектуванні систем так важливо обмежува-

            ти  платформенну  залежність.  Патерни  проектування:  абстрактна
            фабрика, міст;
                  4)  залежність  від  представлення  або  реалізації  об’єкта.  Якщо

            клієнт  «знає»,  як  об’єкт  представлений,  зберігається  або  реалізова-
            ний, то при зміні об’єкта може виявитися необхідним змінити і клієн-

                                                              95
   90   91   92   93   94   95   96   97   98   99   100