Page 38 - 4190
P. 38

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

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

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

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

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

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

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

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

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

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

            знайти “правильний” шлях.
                  У  загальному  випадку  патерн  складається  з  чотирьох  основних
            елементів:

                  1. Ім’я.  Звернувшись  до  імені  можна  відразу  описати  проблему
            проектування її рішення і можливі наслідки. За допомогою словника

                                                              38
   33   34   35   36   37   38   39   40   41   42   43