Null Object Pattern
Simplicity in doing nothing
What is a Design Pattern?
● A reusable solution to a common problem
● Kent Beck and Ward Cunningham applied to
computer science in 1987
● Defined in Design Patterns: Elements of
Reusable Object-Oriented Software by GoF
Null Object Pattern
● Categorized as behavioral pattern
● Similar to the strategy, or state pattern
● Polymorphism
● null interface that can be used by a
collaborator
When To Use
● Symptoms include null checks on properties
● Conditional logic to display an object
● Use of a placeholder
Demo
● Bespoke: lib/search/solr/empty_result_set.rb
● Cheetah:
lib/cheetah/messenger/null_messenger.rb
● Display_case: lib/display_case/exhibit.rb
(null decorator)
● Factory_girl: lib/factory_girl/null_factory.rb
Examples in our Code
Extra Reading
Blog post on Factory Girl NullFactory class:
http://robots.thoughtbot.com/design-patterns-in-
the-wild-null-object

Null object pattern

  • 1.
  • 2.
    What is aDesign Pattern? ● A reusable solution to a common problem ● Kent Beck and Ward Cunningham applied to computer science in 1987 ● Defined in Design Patterns: Elements of Reusable Object-Oriented Software by GoF
  • 3.
    Null Object Pattern ●Categorized as behavioral pattern ● Similar to the strategy, or state pattern ● Polymorphism ● null interface that can be used by a collaborator
  • 4.
    When To Use ●Symptoms include null checks on properties ● Conditional logic to display an object ● Use of a placeholder
  • 5.
  • 6.
    ● Bespoke: lib/search/solr/empty_result_set.rb ●Cheetah: lib/cheetah/messenger/null_messenger.rb ● Display_case: lib/display_case/exhibit.rb (null decorator) ● Factory_girl: lib/factory_girl/null_factory.rb Examples in our Code
  • 7.
    Extra Reading Blog poston Factory Girl NullFactory class: http://robots.thoughtbot.com/design-patterns-in- the-wild-null-object