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.