Java pattern: opis, cechy, przykłady

Rozszerzanie terminów zadań może wymagać powtarzania czynności tego samego rodzaju w określonej kolejności. W tych działaniach pomagają programistom wzorce, czyli Java Patterns (JP), które automatyzują tworzenie obiektów i ich relacji w przestrzeni roboczej użytkownika. Zespoły mogą korzystać z JP w celu zmniejszenia liczby błędów, uproszczenia symulacji i poprawy wydajności. Projektanci tworzą JP przy użyciu informacji zidentyfikowanych z istniejących wdrożeń referencyjnych i przykładowych rozwiązań.

Struktura wzorca projektowego

Struktura wzorca projektowego

Zespoły projektujące rozwiązania zainstalować Javę Design Patterns, za pomocą kreatorów zastosować wzorce w przestrzeni roboczej. Kreatory najlepszych praktyk zmniejszają potrzebę kodowania i skomplikowanego dostosowywania.

JP Design Patterns:

  1. Model danych zawiera wszystkie encje i elementy danych, które realizują wzorzec, w jaki dane są zorganizowane w przestrzeni roboczej. Zapewnia oczekiwane dane wejściowe użytkownika i stosuje je w obszarze roboczym, a także posiada wbudowany system pomocy dostępny po uruchomieniu przez użytkownika projektu Java Pattern.
  2. Interfejs użytkownika. Programiści wchodzą w interakcję z wzorcami projektowymi za pomocą kreatora projektowania JP. Zbiera informacje i organizuje je na różnych stronach kreatora, uzupełnione o podpowiedzi lub wbudowaną pomoc, zgodnie z wymaganiami użytkownika.
  3. Procesor wdrożeniowy. Kiedy użytkownik zakończy pracę z kreatorem projektowania wzorców Java i kliknie "Gotowe", Wzorzec projektowy stosuje dane wprowadzone przez użytkownika do encji i elementów zdefiniowanych w danym projekcie. Następnie JP generuje i organizuje obiekty i elementy danych w przestrzeni roboczej.

Sekwencja cyklu rozwojowego

Sekwencja cyklu rozwojowego

Cykl życia wzorca projektowego rozpoczyna się od identyfikacji i wyodrębnienia samego JP. Pracując z implementacją referencyjną, projektanci identyfikują powtarzalny układ, który obejmuje zasoby i relacje zasobów z przestrzenią roboczą. Zadania w cyklu życia wzorca projektowego w Javie są wykonywane przez dwóch różnych uczestników, projektanta, który tworzy i rozpowszechnia układ, oraz operatora, który konfiguruje wzorce projektowe i uruchamia JP, aby ułatwić rozwój rozwiązania.

Sekwencja projektowania:

  1. Ocenić wspólne zadania modelowania i kluczowe zasoby w implementacjach referencyjnych, przykładowych rozwiązaniach i najlepszych praktykach oraz ustalić, jakie powtarzalne zadania można zautomatyzować w JP.
  2. Opracowanie JP z wykorzystaniem zidentyfikowanych zasobów jako kluczowych elementów.
  3. Przetestuj powstałe wzorce projektowe, uruchamiając je w środowisku Design Studio.
  4. Dołącz JP do projektów wtyczek, które łączą się z projektem obiektu i stroną aktualizacji.
  5. Ustalenie funkcji w zależności od roli i celu.
  6. Uruchamia wzorce projektowe w celu ukończenia rozwiązania projektowego.

Wzór pliku.xml

Plik pattern.xml

Każdy wzór projektowy posiada plik "pattern".xml", który definiuje zawartość wzorca JP. Oprócz atrybutów wysokiego poziomu ustawionych dla pliku, np przestrzeń nazw, atrybuty identyfikatora wzorca i nazwy. Sekcja "Schemat XML" jest plik o nazwie DesignPattern.xsd w folderze layout dostępnym w pakiecie oprogramowania Design Studio. Projektant może określić, czy szablon projektu jest wydaniem głównym, mniejszym lub częścią wydania pakietu aktualizacyjnego poprzez numer wersji szablonu projektu.

Strona Wprowadzenie w kreatorze zawiera informacje opisujące sposób użycia JP. Sekcje szablonu projektu:

  1. Rzeczywiste projekty docelowe, w których przechowywane są zasoby po zastosowaniu szablonu projektu.
  2. Wypełniacze reprezentują informacje, które muszą być wprowadzone przez użytkownika stosującego JP.
  3. Strony, które pojawiają się w kreatorze. Tokeny JP są zorganizowane w jako strony w kreatorze, gdzie każda strona jest ich grupą. Można zdefiniować dowolną liczbę grup tokenów.
  4. Lista zasobów zawartych w JP, który kopiuje te zasoby do przestrzeni roboczej użytkownika.
  5. Domyślne informacje dostarczane przez JP Master, dla automatycznych Wypełnianie nazw tokenów.

Podejście do projektowania w języku Java

Wzorce projektowe są już zdefiniowane i zapewniają standardowe podejście do rozwiązywania powtarzających się problemów, więc oszczędzają czas, jeśli są używane mądrze. Użycie wzorców projektowych zachęca do ponownego użycia, co skutkuje bardziej wytrzymałym i łatwiejszym w utrzymaniu kodem. Pomaga to zmniejszyć całkowity koszt posiadania (TCO) oprogramowania i ułatwia zrozumienie kodu i debugowanie. Prowadzi to do szybszego rozwoju, a nowi członkowie zespołu mogą łatwo nauczyć się nowych programów.

Wzorce projektowe w Javie dzielą się na trzy kategorie - projektowanie dla tworzenia, struktury i zachowania. Kreatywne projektowanie JP zapewnia rozwiązanie dla stworzenia najlepszego możliwego obiektu dla konkretnych sytuacji.

Wzorzec Singleton ogranicza tworzenie instancji klas i zapewnia, że w Maszyna wirtualna Javy istnieje tylko jedna instancja klasy. Wydaje się, że jest to bardzo prosty JP, ale kiedy przychodzi do wdrożenia, ma wiele problemów. Implementacja wzorca Singleton zawsze była kontrowersyjnym tematem wśród programistów i jednym z najbardziej dyskutowanych tematów w projektowaniu JP.

Wzór fabryczny

Sampler fabryczny

Wzorzec fabryczny w Javie jest używany, gdy istnieje nadklasa z wieloma podklasami. Ten wzorzec przenosi odpowiedzialność za tworzenie instancji klasy z programu klienta na klasę fabryczną. Możesz zastosować wzorzec Singleton do klasy Factory lub uczynić metodę fabryczną statyczną. Jest to jeden z najczęściej stosowanych JP.

Abstrakcyjny wzór fabryczny jest podobny do wzoru fabrycznego, który zwraca różne podklasy na podstawie dostarczonych danych wejściowych i używa instrukcji "if-else" lub "switch", aby to osiągnąć. W szablonie Abstract Factory pozbyli się bloku "if-else", pozostawili klasę fabryczną dla każdej podklasy, a następnie Abstract Factory zwraca podklasę opartą na wejściowej klasie fabrycznej.

JP Builder został wprowadzony, aby rozwiązać niektóre problemy z Factory i Abstract Factory, gdy obiekt zawiera wiele atrybutów. Builder Pattern Java eliminuje problem dużej liczby opcjonalnych parametrów i niespójnych działań poprzez dostarczenie metody budującej obiekt krok po kroku oraz metody zwracającej końcowy obiekt.

Projekty konstrukcyjne

Wzorzec projektowy adaptera jest jednym ze wzorów strukturalnych JP i służy do tego, aby dwa niepowiązane interfejsy działały razem. Obiekt, który dołącza do tych niepowiązanych interfejsów, nazywany jest adapterem. Jako przykład z życia wzięty, rozważmy mobilną ładowarka jako adapter, ponieważ dla ładowarka akumulatorów wymaga 3V, podczas gdy zwykłe gniazdko ma napięcie 120V (USA) lub 220V (Rosja). W ten sposób mobilna ładowarka działa jako adapter między mobilnym gniazdem ładowania a gniazdem sieciowym.

JP Composite Pattern jest jednym ze strukturalnych wzorców projektowych i jest używany, gdy chce się reprezentować hierarchię część - całość, stworzyć strukturę tak, aby obiekty w jej obrębie były traktowane jednakowo.

Diagram to przykład z życia, struktura składająca się z obiektów takich jak koło, linia, trójkąt i inne figury geometryczne. Kiedy programista wypełnia obrazek kolorem, powiedzmy czerwonym, ten sam kolor jest również stosowany do obiektów w JP. Tutaj wzór składa się z różnych części, a wszystkie mają te same operacje.

Wzorzec proxy

Celem wzorca proxy jest "Zapewnienie surogatu lub placeholder dla innego obiektu w celu kontrolowania dostępu do niego". Sama definicja jest bardzo jasna, a proxy JP jest używane, gdy trzeba zapewnić kontrolowany dostęp do funkcjonalności.

Załóżmy, że istnieje klasa, która może wykonywać pewne polecenia w systemie, ale jeśli musi przekazać ten program do aplikacji klienckiej, może mieć poważne problemy. Program kliencki może wydać polecenie usunięcia niektórych plików systemowych lub zmiany niektórych parametrów, które nie są potrzebne.

Wzorzec proxy

Wzorzec projektowy Flyweight jest używany, gdy trzeba stworzyć wiele obiektów klasowych. Ponieważ każdy obiekt zużywa miejsce w pamięci, co może być krytyczne dla urządzeń o niskiej pamięci, takich jak urządzenia mobilne lub systemy wbudowane, uproszczony projekt JP może być użyty do zmniejszenia śladu pamięci poprzez współdzielenie obiektów. Implementacja puli łańcuchów w Javie jest jednym z najlepszych przykładów implementacji wzorca Flyweight.

JP Facade jest używany, aby pomóc aplikacjom klienckim w łatwej interakcji z systemem. Załóżmy, że istnieje aplikacja z zestawem interfejsów do korzystania z bazy danych MySql/Oracle do generowania różnych typów raportów, takich jak raport HTML, raport PDF i inne. Tak więc użytkownik będzie miał inny zestaw interfejsów do pracy z różnymi typami baz danych.

Aplikacja kliencka może używać tych interfejsów do uzyskania wymaganego połączenia z bazą danych i generowania raportów. Ale kiedy złożoność wzrasta lub nazwy zachowań interfejsu stają się mylące, aplikacja kliencka będzie miała trudności z zarządzaniem nim. Zastosuj więc szablon Facade i dostarcz interfejs powłoki na wierzchu istniejącego, aby pomóc aplikacji klienckiej.

Hierarchie interfejsów

Gdy użytkownik ma hierarchie interfejsów zarówno w interfejsach, jak i implementacjach, to JP "Most" jest używany do oddzielenia interfejsów od implementacji i ukrycia szczegółów implementacji przed programami klienckimi. Podobnie jak wzór adaptera, jest to jeden z JP projektu strukturalnego. Wdrożenie JP "Most" Postępuj zgodnie z ideą preferowania Kompozycji nad dziedziczeniem.

JP "Dekorator" służy do zmiany funkcjonalności obiektu w czasie rzeczywistym. W tym samym czasie inne instancje tej samej klasy nie zostaną dotknięte, więc pojedynczy obiekt otrzymuje zmienione zachowanie. JP "Dekorator" jest jednym ze strukturalnych wzorców projektowych i służy do implementacji abstrakcyjnych klas lub interfejsów z kompozycją.

Użytkownicy używają dziedziczenia lub kompozycji do rozszerzenia zachowania obiektu, ale jest to wykonywane w czasie kompilacji i dotyczy wszystkich instancji klasy. Nie można dodawać nowych funkcjonalności podczas działania szablonu.

Java Regex Pattern Wyrażenia regularne

Aplikacje często wymagają przetwarzania tekstu dla takich funkcji jak wyszukiwanie słów, weryfikacja poczty elektronicznej lub integralność dokumentów XML. Często wiąże się to z mapowaniem do wzorca. Języki takie jak Perl, sed czy awk usprawniają dopasowywanie wzorców poprzez użycie wyrażeń regularnych, ciągów znaków, które definiują wzorce używane do znalezienia odpowiedniego tekstu. Do dopasowania do szablonu za pomocą język programowania Java wymagana klasa StringTokenizer z wieloma metodami charAt substring do czytania znaków lub tokenów do przetwarzania tekstu. Prowadzi to często do skomplikowanych lub "brudna" kod.

Dla programistów najlepiej jest używać wyrażeń regularnych z java.util.pakiet regex, stosując następujące wspólne scenariusze jako przykłady:

  1. Prosta zamiana słów.
  2. Sprawdź e-mail.
  3. Usuwanie znaków sterujących z pliku.
  4. Wyszukiwanie plików.

Aby móc skompilować kod w tych przykładach i używać wyrażeń regularnych w swoich aplikacjach, należy zainstalować J2SE w wersji 1.4.

Wdrożenie łączności w zakresie dowodzenia

Wzorzec komend jest używany do implementacji utraty komunikacji w "żądanie-odpowiedź". W nim żądanie jest wysyłane do wywołującego, a wywołujący przekazuje je do enkapsulowanego obiektu polecenia. Obiekt polecenia przekazuje do odpowiedniej metody Receiver żądanie wykonania określonej akcji.

Załóżmy, że musisz dostarczyć narzędzie systemu plików z metodami otwierania, zapisywania i zamykania plików, które powinno obsługiwać kilka systemów operacyjnych, takich jak Windows i Unix. Aby zaimplementować narzędzie File System, musisz najpierw stworzyć klasy odbiorników, które będą wykonywać wszystkie czynności. Ponieważ kodowanie odbywa się w kategoriach interfejsów Java, może istnieć interfejs FileSystemReceiver i jego klasy implementujące system operacyjny, takich jak Windows, Unix, Solaris itp.

JP "Tłumacz ustny" jest używany do zdefiniowania gramatycznej reprezentacji języka i dostarcza interpretera do pracy z gramatyką. Najlepszym przykładem tego wzorca jest kompilator "Java", który interpretuje kod źródłowy "Java" do bajtów zrozumiałych dla JVM. Google Translator jest również interpreterem wzorców Java, gdzie wejście może być w jednym języku, a wyjście w innym.

JP "Odwiedzający" używany, gdy chcemy wykonać operację na grupie podobnych obiektów. Można go użyć do przeniesienia logiki operacyjnej z obiektów do innej klasy. Na przykład koszyk na zakupy, w którym można dodawać różne rodzaje przedmiotów, po kliknięciu przycisku "checkout" obliczana jest całkowita kwota do zapłaty.

Java Util Regex Pattern

Kompilacja ze skryptów powłoki Unix/Linux jest używana, gdy pojawiają się okoliczności, w których deweloper nie ma projektu "Ant" lub "Ant-based" do kompilacji programów userland "Jawa "-programy. W takich przypadkach często używa się skryptu powłoki Linuxa do kompilacji klas Java. Bardzo dobrym zastosowaniem, które skrypt robi dla użytkownika, jest dynamiczne dołączanie wszystkich plików Jar, które są potrzebne w ścieżce klasy. Więc pliki Jar są tam, kompilacja ich jest bardzo prosta z linii poleceń.

Program przyjmuje dwa założenia:

  1. Użytkownik znajduje się w katalogu powyżej poziomu o nazwie " src", zawierający " java" pliki.
  2. Użytkownik znajduje się w katalogu powyżej poziomu o nazwie " lib", a wszystkie pliki "Jar", których potrzebuje program, znajdują się w tym katalogu.

Wzór skryptu Kompilacja Java.

Wzorzec Kompilacja skryptu Java

Wyrażenia regularne w "Java" Util to wykorzystanie klas Pattern i Matcher. Możesz użyć String.matches () aby wykonać dopasowanie. W niektórych przypadkach może być konieczne użycie nieco bardziej dosłownego sposobu robienia rzeczy, ale takiego, który ostatecznie daje większą elastyczność i może poprawić wydajność. Konkretnie wykorzystuje dwie klasy z pakietu java.util.regex: Wzór i dopasowanie. Zdjęcie poniżej.

Dwie klasy pakietów

Procedura Java Regex Pattern jest następująca:

  1. kompiluje wyrażenie do obiektu "Wzór".
  2. Wywołuje statyczną metodę wzorca.compile (), przekazując wyrażenie. Ta metoda zwraca obiekt Pattern. Wykonanie tego obiektu jest wewnętrzną reprezentacją wzorca w formie umożliwiającej efektywne wykonanie mapowania.
  3. Kiedykolwiek trzeba wykonać mapowanie, tworzony jest obiekt Matcher.
  4. Aby sprawdzić, czy dany łańcuch pasuje do wzorca, nakładamy na obiekt wzorca metodę matching(), przekazując łańcuch.
  5. Wywołaj Java Pattern Matcher, który zwraca wartość logiczną wskazującą, czy łańcuch przekazany do metody () pasuje do wyrażenia regularnego.

Dlatego wzorce projektowe są bardzo popularne wśród twórców oprogramowania programiści oprogramowania, ponieważ przedstawiają one dobrze opisane rozwiązanie typowego zadania. Są to asystenci, którzy automatyzują złożone, powtarzalne zadania i umożliwiają ich wykonywanie członkom zespołu o różnym poziomie wyszkolenia.

Artykuły na ten temat