Page 38 - 4190
P. 38
стає ще складніше. Необхідно підібрати необхідні об’єкти, віднести
їх до різних класів, дотримуючись розумних деталізацій, визначити
інтерфейс класів і ієрархію наслідування та встановити суттєві відно-
сини між класами. Дизайн повинен з одного боку, відповідати задачі,
яку вирішують, а з іншого – бути спільним, щоб вдалося врахувати
усі вимоги, які б можна було врахувати в майбутньому. Бажано б та-
кож було уникнути або хоча б звести до мінімуму необхідність пере-
проектування. Набравши досвіду в об’єктно-орієнтованому проекту-
ванні більш досвідчені програмісти скажуть вам, що забезпечити
«правильний», тобто в достатній мірі гнучкий і придатний для повто-
рного використання дизайн, з першого разу дуже важко, якщо взагалі
можливо. Перш ніж вважати мету досягнутою необхідно протестува-
ти найдене рішення не декількох задачах та кожний раз модифікувати
його. І досвідченим програміста нарешті вдається створити хороший
дизайн системи. А новачки шоковані від значної кількості можливих
варіантів і нерідко повертаються до звичних для них об’єктно-
орієнтованих методик. Проходить певний час, і їм стають зрозуміли-
ми переваги об’єктно-орієнтованого дизайну. Досвідчені програмісти
ніколи не починають вирішувати нову задачу з нуля. Вони старають-
ся повторно використати ті рішення, які виявилися вдалими в мину-
лому. Знайшовши вдале один раз, він буде використовувати знову. У
багатьох об’єктно-орієнтованих системах можна зустріти патерни,
що повторюються і містять класи та взаємодіючі об’єкти. За їх допо-
могою рішаються конкретні задачі проектування, в результаті чого
об’єктно-орієнтований дизайн стає більш гнучким, елегантним і ним
можна користуватися повторно.
Патерни проектування спрощують повторне використання вда-
лих проектних і архітектурних рішень. Представлення методик, що
пройшли перевірку часом у вигляді патерного проектування, полег-
шує доступ до них з боку розробників нових систем. За допомогою
патернів можна покращити якість документування і супроводження
існуючих систем, дозволяючи явно описати взаємодію класів і
об’єктів, а також причини, за якими система була побудована так, а
не інакше. Тобто, патери проектування дають програмісту швидше
знайти “правильний” шлях.
У загальному випадку патерн складається з чотирьох основних
елементів:
1. Ім’я. Звернувшись до імені можна відразу описати проблему
проектування її рішення і можливі наслідки. За допомогою словника
38