Java Pattern: опис, можливості, приклади

Java Pattern: опис, можливості, приклади

Розширення умов завдання може вимагати повторення однотипних дій у визначеному порядку. Такі дії допомагають програмістам виконувати шаблони, або Java Pattern (JP), які автоматизують створення об 'єктів та їх відносин у робочій області користувача. Команди можуть використовувати JP, щоб зменшити кількість помилок, спростити моделювання і підвищити продуктивність. Дизайнери створюють JP, використовуючи інформацію, ідентифіковану з існуючих еталонних реалізацій і прикладів рішень.

Структура шаблону проектування

Команди розробників рішень встановлюють Java Design Patterns, використовуючи майстри, застосовують шаблони в робочому просторі. Ці майстри, що відповідають кращим практикам, знижують потребу в кодуванні і складному налаштуванні.


Структура JP:

  1. Модель даних включає всі сутності та елементи даних, які реалізують шаблон, в якому ці дані організовані в робочій області. Вона забезпечує очікуване користувацьке введення і застосовує його до робочого простору, а також має вбудовану довідкову систему, доступну, коли користувач запускає дизайн Java Pattern.
  2. Інтерфейс користувача. Розробники взаємодіють з шаблонами проектування за допомогою майстра проектування JP. Він збирає інформацію і організовує її на різних сторінках майстра, доповнюючи підказками або вбудованою довідкою, на вимогу користувача.
  3. Процесор реалізації. Коли користувач завершує роботу з майстром Java Pattern проектування і натискає кнопку "Готово", шаблон дизайну застосовує введені користувачем дані до сутностей і елементів, визначених у даному проекті. Після чого JP створює та організовує об 'єкти та елементи даних у робочій області.

Послідовність циклу розробки

Життєвий цикл шаблону проектування починається з ідентифікації та ізоляції самого JP. Працюючи з еталонною реалізацією, дизайнери ідентифікують повторюваний макет, який включає ресурси і відносини ресурсів з робочим простором. Завдання в життєвому циклі Java Pattern проектування виконуються двома різними учасниками, дизайнером, який створює і поширює макет, а також оператором, що встановлює зразки проектування і запускає JP для полегшення розробки рішення.

Послідовність дизайнерської обробки:

  1. Оцінюються загальні завдання моделювання та ключові ресурси в довідкових реалізаціях, прикладах рішень і передових практиках та встановлюють, які повторювані завдання можна автоматизувати в JP.
  2. Розробляють JP з використанням виявлених ресурсів як ключових компонентів.
  3. Тестують отримані шаблони проектування, запустивши їх у середовищі Design Studio.
  4. Включають JP в проекти плагінів, які пов 'язують з проектом об' єктів і з сайтом оновлень.
  5. Встановлюють функції залежно від їхньої ролі та цілей.
  6. Запускають шаблони проектування, щоб завершити дизайнерське рішення.

Файл pattern.xml

Кожен шаблон дизайну має файл "pattern.xml", який визначає вміст моделі JP. На додаток до високорівневих атрибутів, встановлених для файлу, наприклад, до простору імен, ідентифікатора шаблону та атрибутів імені. У розділі "Схема XML" є файл з назвою DesignPattern.xsd у теці схеми, доступній у програмному пакеті Design Studio. Розробник може вказати, чи є шаблон проектування основним або другорядним випуском або частиною випуску пакета оновлення за номером версії шаблону проектування.

На сторінці "Введення" в майстрі міститься інформація, яка описує, як можна використовувати JP. Розділи шаблону проектування:

  1. Дійсні цільові проекти, в яких зберігаються ресурси під час застосування шаблону проектування.
  2. Заповнювачі представляють інформацію, яка повинна бути введена користувачем, що застосовує JP.
  3. Сторінки, які відображаються у майстрі. Токени JP організовані у вигляді сторінок у майстрі, де кожна сторінка є їх групою. Можна визначити будь-яку кількість груп токенів.
  4. Список ресурсів JP, який копіює ці ресурси в робочий простір користувача.
  5. Типова інформація, надана майстру JP, для автоматичного заповнення імен токенів.

Підхід Java до дизайну

Шаблони проектування вже визначені і надають стандартний галузевий підхід для вирішення повторюваної проблеми, тому це економить час, якщо він розумно використовується. Використання шаблонів проектування сприяє повторному використанню, що призводить до створення більш надійного і легко обслуговуваного коду. Це допомагає знизити сукупну вартість володіння (TCO) програмного продукту і полегшує розуміння і налагодження коду. Це призводить до більш швидкого розвитку, і нові члени команди легко навчаються новим програмам.


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

Шаблон Singleton обмежує створення екземплярів класу і гарантує, що у віртуальній машині Java існує тільки один екземпляр класу. Здається, що це дуже простий JP, але коли справа доходить до реалізації, у нього з 'являється багато проблем. Реалізація Singleton шаблону завжди була спірною темою серед розробників і однією з найбільш обговорюваних тем JP проектування.

Фабричний зразок

Java Factory Pattern використовується коли є суперклас з кількома підкласами. Цей шаблон бере на себе відповідальність за створення екземпляра класу від клієнтської програми до фабричного класу. Можна застосувати шаблон Singleton до класу Factory або зробити метод фабрики статичним. Це один з найбільш широко використовуваних JP.

Абстрактний Фабричний зразок (Abstract Factory) схожий на Фабричний зразок, який повертає різні підкласи на основі наданого введення, і використовує оператор "if-else" або "switch" для досягнення цієї мети. У шаблоні Abstract Factory позбулися блоку "if-else", залишили клас фабрики для кожного підкласу, після чого Abstract Factory повертає підклас на основі вхідного класу фабрики.

JP Будівельник було введено для вирішення деяких проблем Factory і Abstract Factory, коли Object містить багато атрибутів. Builder Pattern Java усуває проблему великої кількості необов 'язкових параметрів і неузгоджених дій, надаючи спосіб покрокової побудови об' єкта і метод, що повертає кінцевий об 'єкт.

Структурні конструкції

Шаблон проектування адаптера є одним з JP структурного проектування і використовується для спільної роботи двох не пов 'язаних між собою інтерфейсів. Об 'єкт, який приєднується до цих непов' язаних інтерфейсів, називається адаптером. Як приклад з реального життя можна розглядати мобільний зарядний пристрій як адаптера, оскільки для зарядки акумулятора потрібно 3 В, а звичайна розетка видає напругу 120 В (США) або 220 В (Росія). Таким чином, мобільний зарядний пристрій працює як адаптер між мобільною зарядною розеткою і мережевою розеткою.

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


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

Проксі шаблон

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

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

Шаблон проектування Flyweight використовується, коли потрібно створити багато об 'єктів класу. Оскільки кожен об 'єкт споживає простір пам' яті, який може мати вирішальне значення для пристроїв з невеликим об 'ємом пам' яті, таких як мобільні пристрої або вбудовані системи, можна застосовувати JP зі спрощеним дизайном, щоб зменшити навантаження на пам 'ять шляхом спільного використання об' єктів. Реалізація пулу рядків Java є одним з найкращих прикладів реалізації шаблонів Flyweight.

JP Фасада (Facade) використовується, щоб допомогти клієнтським додаткам легко взаємодіяти з системою. Припустімо, є програма з набором інтерфейсів для використання бази даних MySql/Oracle з метою створення звітів різних типів, таких як звіт HTML, звіт PDF та інші. Таким чином, у користувача буде інший набір інтерфейсів для роботи з різними типами бази даних.


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

Ієрархії інтерфейсів

Коли у користувача є ієрархії інтерфейсів в обох інтерфейсах, а також реалізації, тоді JP "Міст" використовується, щоб відокремити інтерфейси від реалізації і приховати деталі реалізації від клієнтських програм. Як і шаблон адаптера, це один з JP структурного проектування. Реалізація JP "Мосту" "слід ідеї про перевагу Composition, а не спадкування.

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

Користувачі використовують успадкування або композицію для розширення поведінки об 'єкта, але це робиться під час компіляції і застосовно до всіх примірників класу. Неможливо додати нові можливості під час виконання шаблону.

Формальні вирази Java Regex Pattern

Програми часто потребують обробки тексту для таких функцій, як пошук слів, перевірка електронної пошти або цілісність документа XML. Це часто включає співставлення зі зразком. Такі мови, як Perl, sed або awk, покращують співставлення з шаблоном за допомогою формальних виразів, рядків символів, які визначають шаблони, що використовуються для пошуку відповідного тексту. Для порівняння з шаблоном з використанням мови програмування Java потрібно було використання StringTokenizer класу з багатьма charAt методами підрядка для читання символів або токенів для обробки тексту. Це часто призводить до складного або "брудного" "коду.


Для програмістів краще використовувати формальні вирази з java.util.regex пакетом, застосовуючи такі поширені сценарії як приклади:

  1. Проста заміна слів.
  2. Перевірка електронної пошти.
  3. Видалення символів керування з файлу.
  4. Пошук файлів.

Щоб скомпілювати код у цих прикладах і використовувати формальні вирази у програмах, потрібно встановити J2SE версії 1.4.

Реалізація зв 'язку команди

Шаблон команди використовується для реалізації втрати зв 'язку в моделі "запит-відповідь" ". У ньому запит надсилається зухвалому, а invoker передає його інкапсульованому об 'єкту команди. Командний об 'єкт передає запит до відповідного методу Receiver для виконання певної дії.

Припустимо, потрібно надати утиліту файлової системи з методами відкриття, запису та закриття файлу, і вона повинна підтримувати кілька операційних систем, таких як Windows і Unix. Для реалізації утиліти File System, перш за все, потрібно створити класи-одержувачі, які фактично будуть виконувати всю роботу. Оскільки кодування виконується в термінах Java-інтерфейсів, може бути інтерфейс FileSystemReceiver і його класи реалізації для різних різновидів операційної системи, таких як Windows, Unix, Solaris та інші.

JP "Перекладач" використовується для визначення граматичного представлення мови і надає інтерпретатора для роботи з граматикою. Найкращий приклад цього шаблону - компілятор "Джава", який інтерпретує початковий код "Джава" "в байтовий, зрозумілий для JVM. Google Translator також є Example Patterns Java інтерпретатора, де введення може бути однією мовою, а висновок - іншою.


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

Приклад Java Util Regex Pattern

Компіляція зі сценарію оболонки Unix/Linux застосовується, коли виникають обставини, коли у розробника немає "Ant" або "Ant-based" проекту для компіляції користувальницьких "" Джава "-програм. У таких випадках зазвичай використовують сценарій оболонки Linux для компіляції своїх класів Java. Дуже добре застосування, яку скрипт робить для користувача - це динамічне включення всіх файлів Jar, які потрібні, в шлях до класів. Таким чином, Jar-файли знаходяться там, їх компіляція дуже проста з командного рядка.

Програма робить два припущення:

  1. Користувач знаходиться в каталозі над рівнем з назвою "" src "", яка містить "" java "" файли.
  2. Користувач знаходиться в каталозі над рівнем з назвою "lib", і всі файли Jar, які потрібні програмі, знаходяться в цьому каталозі.

Скрипт Pattern Compile Java.

Формальні вирази в "Джава" "Util - це використання класів Pattern і Matcher. Ви можете використовувати метод String.matches () для порівняння. У деяких випадках потрібно використовувати трохи більш багатослівний спосіб проведення сеансу, але той, який в кінцевому підсумку дає більше гнучкості і може поліпшити продуктивність. Зокрема, використовують два класи пакету java.util.regex: Pattern и Matcher. Фото представлені нижче.

Процедура Java Regex Pattern виглядає наступним чином:

  1. Компілюють вираз в об 'єкт "Патерн".
  2. Викликають статичний метод Pattern.compile (), передаючи вираз. Цей метод повертає об 'єкт Pattern. Виконання цього об 'єкта є внутрішнім представленням шаблону у формі, яка робить його ефективним для виконання співставлень.
  3. Кожен раз, коли потрібно виконати співставлення, створюють об 'єкт Matcher.
  4. Для того, щоб перевірити, чи відповідає конкретний рядок шаблону, накладають узгодження () методу на шаблон об 'єкта, передаючи в рядку.
  5. Збігаються Java Pattern Matcher, який повертає логічне значення, яке вказує, чи відповідає рядок, переданий у метод (), формальний вираз.

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