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:

Č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ť:

prototype design pattern program output
výstup príkladu prototype

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.

 

O autorovi

Jozef Wagner

Java Developer Senior

Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

Daj nám o sebe vedieť