W obecnych czasach developerzy oprogramowania muszą odznaczać się wysoką produktywnością, aby móc sprostać wciąż wzrastającym wymaganiom na oprogramowanie. Wielu profesjonalistów z branży IT wciąż kontynuuje jednak spędzanie wielu godzin pracy nad rozwijaniem powtarzających się i istniejących od dawna rozwiązań na niskim poziomie abstrakcji. Istnieją jednak nowe metody wspierające proces budowania oprogramowania, dzięki którym to specjaliści IT nie muszą pracować nad powtarzającymi się problemami, ale za to mogą skupić swoją uwagę na poważniejszych koncepcjach znajdujących się na wyższych poziomach abstrakcji. Mowa tutaj oczywiście o wzorcach projektowych.
Bardzo ogólnie mówiąc wzorce projektowe są to wielokrotnie wykorzystywane rozwiązania problemów dotyczących projektowania oprogramowania. Ich podłoże często stanowiły idee lub dobre praktyki, których trzymali się projektanci oprogramowania. Wzorce projektowe mogą dotyczyć różnych warstw, począwszy od warstwy biznesowej, poprzez projektowanie, implementację, a kończąc na wdrażaniu i rozwoju oprogramowania.
Wzorce projektowe zostały podzielone na trzy grupy:
– wzorce konstrukcyjne (z ang. Creational Patterns), które wykorzystywane są do pozyskiwania obiektów zamiast bezpośredniego tworzenia instancji klas;
– wzorce strukturalne (z ang. Structural Patterns), które pomagają łączyć obiekty w większe struktury;
– wzorce behawioralne (z ang.Behavioral Patterns), służące do definiowania komunikacji pomiędzy obiektami oraz kontrolowania przepływu danych w złożonej aplikacji.
Podsumowując, mogę bez wątpienia powiedzieć, że nie sposób nie docenić wykorzystania wzorców projektowych w dzisiejszej inżynierii oprogramowania. Co czyni z nich wyjątkowe rozwiązanie? Przede wszystkim fakt, że znacznie zwiększają one produktywność programistów, promują naukę oraz ponowne wykorzystanie efektywnych rozwiązań, a także to, iż mogą one wspierać rozwój oprogramowania we wszystkich jego etapach.
Po tym krótkim wstępie przejdę teraz do realizacji ćwiczenia laboratoryjnego.
W RSA także można stosować wzorce projektowe. Aby zaprezentować możliwości wykorzystania wzorców projektowych w RSA utworzyłem nowy projekt UML o nazwie ACMEPatternProject.
Okno przedstawiające proces tworzenia projektu UML: ACMEPatternProject
Następnie do widoku Pattern Explorer przeniosłem wzorzec projektowy o nazwie Observer na diagram Main w nowostworzonym projekcie. Instancję wzorca Observer na diagramie main, można zaobserwować na poniższym rysunku.
Przypomnę, że wzorzec observer należy do wzorców czynnościowych. W praktyce umożliwia on powiadamianie obiektów (obserwatorów) o zmianie danych obiektu czy klasy centralnej (obserwowanej) dając możliwość wielokrotnego wykorzystywania klas bez zbędnych modyfikacji ich kodu czyniąc go przy tym czytelniejszym i bardziej przejrzystym.
Kolejnym krokiem było wprowadzenie nazw argumentów dla danej instancji wzorca.
Kolejnym etapem jest wyświetlenie relacji pomiędzy klasami zawartym w obrębie danego wzorca. Efekt tych działań przedstawiony jest poniżej:
Ostatnim krokiem jest przekształcenie uzyskanego projektu UML na projekt Java. Aby tego dokonać trzeba użyć już zdefiniowanej lub zdefiniować nową transformacje, której efekty działania widać poniżej:
Dla przykładu zamieściłem poniżej kod klasy ConcretPayrollObserver.java, która to została wygenerowana między innymi podczas przeprowadzonej wcześniej transformacji UML -> Java.