Обгрунтування вибору шаблону проектування - Розробка web-додатків

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

Існує три основні види патернів. Кожен вид призначений на вирішення певного кола завдань. Виділяють такі види шаблонів проектування:

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

- структурні патерни. Основним завданням цього виду шаблонів проектування є компонування системи на основі класів та об'єктів;

- Поведінкові патерни. Цей вид патернів призначений розподілу обов'язків між об'єктами у системі.

Основною перевагою застосування того чи іншого патерну є те, що за допомогою готових абстракцій значно знижується складність розробки. Крім того, застосування відомих шаблонів у проектуванні значно полегшує комунікацію між розробниками, які працюють над загальним проектом. Також варто зазначити, що рахунок патернів проводиться уніфікація деталей рішень, знижується кількість помилок. Використання шаблонів проектування можна порівняти з використанням готових бібліотек коду. До того ж, шаблон проектування дозволяє, знайшовши вдале рішення, скористатися ним знову і знову [11].

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

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

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

Один із найпопулярніших шаблонів - Фабричний метод. Даний шаблон визначає інтерфейс для створення об'єкта, але залишає підклас рішення про те, який клас інстанціювати. Доцільно застосовувати даний шаблон коли:

- класу наперед невідомо, об'єкти яких підкласів йому потрібно створювати;

- клас спроектований так, щоб об'єкти, що він створює, специфікувалися підкласами;

- клас делегує свої обов'язки одному з кількох допоміжних підкласів, і планується локалізувати знання у тому, який клас приймає ці обов'язки він [11].

Як переваги даного патерна можна виділити те, що можна створювати універсальний код створення об'єктів і встановлювати зв'язок між паралельними ієрархіями класів. Отже, метод можна застосувати для великих проектів. В інших ситуаціях створює надмірну перевантаженість. Також недоліком методу є необхідність створювати спадкоємця кожного нового типу продукту [11].

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

Як недолік можна назвати те, що з використанні патерна Одиночка знижується тестируемость web-додатка. Найчастіше використання залежностей застосовується замість патерна Одиночка. Використовуючи використання залежності позбавляє непотрібних з'єднань у дизайн програми, а об'єкт, використовуючи загальний чи глобальний ресурс, вимагає знання конкретного класу [23].

Фронт контролер - ще один шаблон проектування, який часто-густо застосовують для розробки web-додатків. Основна ідея його полягає в тому, що Один контролер опрацьовує всі запити до web-сайту. Фронт контролер поєднує всю обробку запитів, пропускаючи запити через єдиний об'єкт-обробник. Після обробки запиту контролер звертається до конкретного об'єкта відпрацювання конкретної поведінки [11].

Модель-представлення-контролер (далі MVC) це найпоширеніший патерн, що належить сімейству шаблонів проектування, метою яких є відокремлення бізнес-логіки (моделі) програми від інтерфейсу користувача (уявлення). Відділення відбувається так, щоб модифікація одного з компонентів мала мінімальний вплив на інші. Найбільш корисним є застосування цієї концепції в тих випадках, коли користувач повинен бачити ті самі дані одночасно в різних контекстах та/або з різних точок зору. Зокрема, виконуються такі завдання:

- До однієї моделі можна приєднати кілька видів, при цьому неторкаючись реалізації моделі;

- Не торкаючись реалізації видів, можна змінити реакції на дії користувача (натискання мишею на кнопці, введення даних);

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

Концепція MVC поділяє структуру програми на:

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

- Подання, вид (англ. View). Відповідає відображення інформації (візуалізацію). Часто як уявлення виступає форма (вікно) із графічними елементами.

- Контролер (англ. Controller). Забезпечує зв'язок між користувачем та системою: контролює введення даних користувачем та використовує модель та подання для реалізації необхідної реакції [11].

Як уявлення, і контролер залежить від моделі. Однак модель не залежить від подання, ні від контролера. Тим самим досягається призначення такого поділу: воно дозволяє будувати модель незалежно від візуального уявлення, а також створювати кілька уявлень для однієї моделі [11].

Таким чином, можна дійти висновку, що патерн MCV робить структуру програми гнучкою і робить її зручнішою для змін, що дуже важливо для проектів, що розвиваються. Крім даних переваг, MVC має інтеграцію в ASP.NET (технологія створення web-додатків та web-сервісів), що спрощує розробку web-додатка.

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