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

Кожен шаблон дизайну має файл " 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.

Скрипт 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, який повертає логічне значення, яке вказує, чи відповідає рядок, переданий методу (), регулярному виразу.

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

Статті на тему