Aby wyeliminować powtarzanie testów wartości pustej wykorzystuje się wzorzec pusty obiekt.

Zalety upraszcza kod programu, eliminując zbędne i powtarzające się instrukcje warunkowe, stosuje klasy polimorficzne, hermetyzuje puste zachowanie, poprzez metodę o pustym ciele, umożliwia wielokrotne wykorzystanie pustego zachowania.

Wady sprawia, że puste zachowanie trudno rozpowszechnić wśród zachowań kilku obiektów współpracujących (silna hermetyzacja), może powodować eksplozję (niepotrzebny rozrost) klasy, może spowodować, że normalne wykonywanie programu potraktowane jest jako błąd.

Struktura thumb|365px|Diagram klas wzorca pusty obiekt Głównymi elementami w tym wzorcu są: Client – klient stosuje realizację klasy abstrakcyjnej. Z punktu widzenie klienta nie ma znaczenia, czy realizacja jest obiektem pustym, czy rzeczywistym, ponieważ oba są stosowane w ten sam sposób. AbstractObject – klasa abstrakcyjna, która może być realizowana przez klasę rzeczywistą lub pustą. RealObject – rzeczywista realizacja klasy AbstractObject wykonująca konkretne działanie. NullObject – realizacja klasy AbstractObject, w której nic nie jest wykonywane, w celu zapewnienia dostarczenia niepustego obiektu do klienta.