Návrhové vzory Java (design patterns): Facade

Dnes sa pozrieme na ďalší návrhový vzor Facade (java design patterns) z kategórie štrukturálnych vzorov (structural patterns). Návrhové vzory v tejto kategórii sa zaoberajú štruktúrou triedy, ako je dedičnosť (inheritance) a kompozícia (composition). Čo je návrhový vzor Facade? Facade (fasáda) je návrhový vzor, ktorý poskytuje zjednodušené rozhranie pre komunikáciu s komplexným systémom, ktorý môže pozostávať z viacerých tried, rozhraní a komponentov. Často sa využíva spolu s návrhovým vzorom Singleton. Aký problém návrhový vzor Facade rieši? Facade design pattern rieši problém komplexnosti tým, že poskytuje ako prístup klientovi jednoduché unifikované rozhranie, ktoré skrýva podrobnosti o vnútri systému, ktoré môže byť kvôli množstvu tried a vzájomných závislosti ťažko pochopiteľné a ovládateľné. Výhodou fasády je tiež, že komplexný systém sa môže meniť, bez ohľadu na klienta, ktorý komunikuje iba cez fasádu. Príklad Facade implementácie v Jave Teraz si napíšeme program na testovanie vlastností zadaných čísel. Použijeme pritom návrhový vzor Facade, ktorý skryje komplexnosť výpočtov pred používateľom. Trieda SystemA obsahuje metódu jePrvocislo(), ktorá zistí, či zadané číslo je prvočíslo. Prvočíslo je číslo väčšie ako 1, ktoré nemá žiadne iné delitele okrem 1 a seba samého. SystemA.java package designpatterns; public class SystemA { public boolean jePrvocislo(int cislo) { if (cislo <= 1) { return false; } for (int i = 2; i <= Math.sqrt(cislo); i++) { if (cislo % i == 0) { return false; } } return true; } } Trieda SystemB obsahuje metódu jeFibonacihoCislo(), ktorá zistí, či je zadané číslo členom postupnosti Fibonacciho. Postupnosť Fibonacciho je taká, že každé číslo v postupnosti je súčet dvoch predchádzajúcich čísel (napr. 0, 1, 1, 2, 3, 5, ). SystemB.java package designpatterns; public class SystemB { public boolean jeFibonacihoCislo(int cislo) { int a = 0, b = 1, temp; while (a < cislo) { temp = a; a = b; b = temp + b; } return a == cislo; } } SystemC obsahuje metódu jeOdmocnitelne(), ktorá zistí, či je zadané číslo možné odmocniť bezozvyšku. Odmocnina je číslo, ktoré vynásobené samo so sebou dáva pôvodné číslo. SystemC.java package designpatterns; public class SystemC { public boolean jeOdmocnitelne(int cislo) { if (cislo < 0) { return false; } int odmocnina = (int) Math.sqrt(cislo); return odmocnina * odmocnina == cislo; } } Trieda Fasada kombinuje predchádzajúce systémy a ich metódy prostredníctvom metódy komplexnaOperacia(), ktorá zanalyzuje zadané číslo a vráti výsledok v textovom reťazci. Fasada.java package designpatterns; public class Fasada { private SystemA systemA; private SystemB systemB; private SystemC systemC; public Fasada() { systemA = new SystemA(); systemB = new SystemB(); systemC = new SystemC(); } public String komplexnaOperacia(int cislo) { StringBuilder vysledok = new StringBuilder( Fasáda spúšťa analýzu čísla + cislo + :\n ); vysledok.append( Systém A: Je prvočíslo? ).append(systemA.jePrvocislo(cislo)).append( \n ); vysledok.append( Systém B: Je Fibonačiho číslo? ).append(systemB.jeFibonacihoCislo(cislo)).append( \n ); vysledok.append( Systém C: Dá sa číslo odmocniť? ).append(systemC.jeOdmocnitelne(cislo)); return vysledok.toString(); } } Main trieda je vstupným bodom programu. Vytvára inštanciu fasády a volá jej metódu komplexnaOperacia() na ľubovoľnom zadanom čísle. V tomto príklade sme nastavili číslo na 1. Výsledok tejto operácie je potom vypísaný na konzolu. Main.java import designpatterns.Fasada; public class Main { public static void main(String[] args) { Fasada fasada = new Fasada(); // Môžeš zmeniť na akékoľvek iné číslo int zadaneCislo = 1; String vysledok = fasada.komplexnaOperacia(zadaneCislo); System.out.println(vysledok); } } Výstup z tohto príkladu Main.java Zhrnutie Návrhový vzor Facade sa používa v situácii, keď potrebujeme schovať komplikovaný a ťažko zrozumiteľný kód komplexných systémov. Zabudovaním fasády medzi klienta a systém môže klient jednoducho interagovať s fasádou, ktorá zabezpečuje správne volanie komplexných operácií a skrýva detaily systému. Pripravili sme pre teba súbory so spomínaným príkladom vo forme kódu, ktorý si môžeš spustiť priamo v Jave. Stiahni si kód Java Facade tu. Ovládaš programovací jazyk Java? Ak hľadáš prácu ako Java programátor, pozri si naše firemné benefity a reaguj na najnovšie pracovné ponuky.The post Návrhové vzory Java (design patterns): Facade first appeared on msgprogramator.sk.

prejsť na článok

Návrhové vzory Java (design patterns): Decorator

Dnes sa pozrieme na ďalší návrhový vzor Decorator (java design patterns) z kategórie štrukturálnych vzorov (structural patterns). Návrhové vzory v tejto kategórii sa zaoberajú štruktúrou triedy, ako je dedičnosť (inheritance) a kompozícia (composition). Č

prejsť na článok

Návrhové vzory Java (design patterns): Iterator

Dnes sa pozrieme na ďalší návrhový vzor Iterator (java design patterns) z kategórie vzorov správania (behavioral patterns). Návrhové vzory v tejto kategórii sa zaoberajú komunikáciou (interaction) medzi objektami a ich zodpovednosťou (responsibility). Čo

prejsť na článok

Návrhové vzory Java (design patterns): Chain of Reponsibility

Dnes sa pozrieme na prvý návrhový vzor Chain of Responsibility (java design patterns) z kategórie vzorov správania (behavioral patterns). Návrhové vzory v tejto kategórii sa zaoberajú komunikáciou (interaction) medzi objektami a ich zodpovednosťou (respon

prejsť na článok

Návrhové vzory Java (design patterns): Proxy

Dnes sa pozrieme na ďalší návrhový vzor Proxy (java design patterns) z kategórie štrukturálnych vzorov (structural patterns). Návrhové vzory v tejto kategórii sa zaoberajú štruktúrou triedy, ako je dedičnosť (inheritance) a kompozícia (composition). Čo je

prejsť na článok

Návrhové vzory Java (design patterns): Command

Dnes sa pozrieme na ďalší návrhový vzor Command (java design patterns) z kategórie vzorov správania (behavioral patterns). Návrhové vzory v tejto kategórii sa zaoberajú komunikáciou (interaction) medzi objektami a ich zodpovednosťou (responsibility). Čo j

prejsť na článok