Java programátor expert
Návrhové vzory Java (design patterns): Prototype
Dnes sa pozrieme na ďalší návrhový vzor Prototype (java design patterns) z kategórie vzorov určených na vytváranie objektov (creational patterns).
Prečítaj si o ďalších design patterns – seriál návrhových vzorov:
- Design pattern Builder
- Design pattern Singleton
- Design pattern Factory
- Design pattern Abstract Factory
- Design pattern Adapter
Čo to je návrhový vzor Prototype?
Design pattern Prototype je softvérový návrhový vzor, ktorý sa používa na vytváranie nových objektov kopírovaním existujúceho objektu.
Aký problém návrhový vzor Prototype rieši?
Rieši problém vytvárania nových objektov s minimálnymi nákladmi na výpočtový čas a pamäť tým, že sa vyhneme opakovanému vytváraniu objektov pomocou konštruktora. Namiesto toho vytvoríme jednu vzorovú inštanciu (prototyp), ktorú následne môžeme skopírovať, keď potrebujeme vytvoriť nový objekt.
Tento návrhový vzor je užitočný, keď je vytváranie objektov náročné alebo ak sa získavanie nových inštancií objektu líši od jednoduchého volania konštruktora. Taktiež je užitočný pri vytváraní hlbokých kópií objektov, ktoré obsahujú zložité štruktúry dát.
Príklad Prototype design pattern implementácie v Jave
Teraz si ukážeme ako implementovať vzor Prototype v Jave.
Shape.java
Trieda Shape predstavuje vzor prototype, ktorá musí implementovať interface Cloneable a preťažiť metódu clone().
package designpatterns;
public class Shape implements Cloneable {
private String type;
public Shape(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public Shape clone() throws CloneNotSupportedException {
return (Shape) super.clone();
}
}
Tu je príklad použitia triedy Shape s implementovaním návrhovým vzorom Prototype:
Main.java
V tomto príklade sme vytvorili triedu Shape, ktorá predstavuje prototyp objektu. V metóde main sme najprv vytvorili vzorovú inštanciu prototype s typom Circle. Následne sme skopírovali túto inštanciu a vytvorili sme objekt shape1. Po zmenení typu shape1 sme skopírovali vzor znova a vytvorili sme objekt shape2.
import designpatterns.Shape;
public class Main {
public static void main(String[] args) {
// Shape creation
Shape prototype = new Shape("Circle");
try {
// Clone shape to create a new object
Shape shape1 = prototype.clone();
System.out.println("Object 1: " + shape1.getType());
// Changing the type of new object
shape1.setType("Square");
System.out.println("Object 1 after type change: " + shape1.getType());
// Creating another object by cloning the shape
Shape shape2 = prototype.clone();
System.out.println("Object 2: " + shape2.getType());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
Výstup z tohto príkladu by mal byť:
Pripravili sme pre teba súbory so spomínaným príkladom Prototype kódu, ktorý si môžeš spustiť priamo v Jave. Stiahni si kód tu.