Disainimustrid Flashcards
Factory pattern (loomise muster)
Muster, mis sisaldab factory klassi, mis otsustab töö käigus ise, ilma et talle peaks ütlema, millist objekti on vaja luua. Eriti kasulik siis, kui on vaja luua erinevaid objekte, kuid nende tüüpe ei tea ette.
public static Polygon getPolygon(int numberOfSides) { return switch (numberOfSides) { case TRIANGLE_SIDES -> new Triangle(); case SQUARE_SIDES -> new Square(); case PENTAGON_SIDES -> new Pentagon(); case HEXAGON_SIDES -> new Hexagon(); default -> throw new IllegalArgumentException( "Number of sides value must be between 3 and 6"); };}
Builder pattern (loomise muster)
Muster, mis sisaldab Builder klassi, mis seadistab loodava objekti väljad samm-haaval meetodite ahelana, kus iga välja jaoks on eraldi meetod, ning lõpuks “ehitab” ja tagastab loodud objekti.
Kasulik siis, kui uuele objektile antakse kaasa palju parameetreid / mõned
parameetrid on valikulised, aitab ära hoida vajadust luua palju erinevaid
konstruktoreid.
Singleton pattern (loomise muster)
Muster, mille põhimõte on, et
klassist saab luua ainult ühe instantsi, mida teised klassid kasutavad.
Klass on deklareeritud final klassina.
Klassil on privaatne konstruktor, et teha kindlaks, et seda väljaspoolt
klassis kätte ei saada.
Tavaline on teha, et klassil on üks staatiline instance, mis public
getInstance meetodiga esimesel korral luuakse ja tagastatakse, ja
edastistel meetodi kutsetel ainult tagastatakse.
Strategy pattern (käitumuslik muster)
Muster, milles kasutatakse “Strategy” liidest, “Strategy” klasse ja klassi, mis kasutab millegi tegemiseks erinevaid strateegiaid. See võimaldab seda, et programm ei sõltu konkreetsest lahendamise strateegiast või algoritmist, vaid strateegia või algoritm on jäetud abstraktseks ja programm saab seda olenevalt objekti omadusest vahetada.
Mustrite kasutamise eelised
Disainimustrite kasutamine pakub
tarkvaraarendajatele struktureeritud viise, kuidas lahendada levinud
probleeme ja luua kvaliteetset, paindlikku, skaleeritavat, hooldatavat ja taaskasutatavat tarkvara.