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.