Null Object

Null Object (Prázdný objekt) je navrhový vzor, který slouží k eliminaci testů na prázdnotu ukazatele, jež často zaplevelují rozhodování v aplikaci. Null Object je platný objekt daného typu, který použijeme na místo prázdné reference a nevykonává při volání svých metod žádnou akci.


Příklad

Jednoduchý školní systém docházek. V případě, že žák nepřijde na hodinu a je mu méně než 18 let, dojde k informování rodičů pomocí SMS a e-mailu. Pokud je žákovi více jak 18 let, tak rodiče informováni nebudou.

/**
 * Interface pro sluzbu kontaktovani rodicu
 * @author Pavel Micka
 */
interface ParentContacterIface{
    /**
     * Posle email
     */
    public void sendEmail();
    /**
     * Posle SMSku
     */
    public void sendSMS();
}

/**
 * Slouzi pro kontaktovani rodicu studentu, kterym jeste nebylo 18
 * @author Pavel Micka
 */
class DefaultParentContacter implements ParentContacterIface{
    public void sendEmail() {
        System.out.println("Posilam e-mail mamince: Vase dite neprislo do skoly?!");
    }
    public void sendSMS() {
        System.out.println("Posilam SMS tatinkovi: Pripravte remen!");
    }
}

/**
 * Slouzi jako Null Object pro studenty, jimz uz bylo 18 (neprovadi zadne akce)
 * Kdyby tento objekt neexistoval, tak by bylo zapotrebi pri kazdem rozhodnuti
 * o informovani rodicu testovat, zda-li nema zak NULLovy ParentContacter
 *
 * Bezna implementace
 * IF user.prisel_pozde() && user.contacter != null -> user.contacter.sendEmail()
 *
 * Takto
 * IF user.prisel_pozde() -> user.contacter.sendEmail()
 *
 * @author Pavel Micka
 */
class NullParentContacter implements ParentContacterIface{
    public void sendEmail() {
        //DO NOTHING
    }
    public void sendSMS() {
        //DO NOTHING
    }
}

Literatura

  • PECINOVSKÝ, Rudolf. Návrhové vzory. 1. vyd. [s.l.] : Computer press, 2007. 527 s. ISBN 978-80-2511582-4.







Doporučujeme