Skip to content

Copy edit for NullObject readme #109

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 5, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions Behavioral/NullObject/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@

## Purpose

NullOutput is a example of NullObject pattern. It is not formally a Design Pattern by the GoF but it's a schema which appears frequently enough to
be a pattern. Furthermore it is a really good pattern in my opinion:
NullObject is not a GoF design pattern but a schema which appears frequently enough to be considered a pattern. It has the following benefits:

* the code in the client is simple
* it reduces the chance of null pointer exception
* less "if" => less test cases
* Client code is simplified
* Reduces the chance of null pointer exceptions
* Fewer conditionals require less test cases

Every time you have a method which returns an object or null, you should return an object or a `NullObject`. With NullObject, you don't need
a statement like `if (!is_null($obj)) { $obj->callSomething(); }` anymore.
Methods that return an object or null should instead return an object or `NullObject`. `NullObject`s simplify boilerplate code such as `if (!is_null($obj)) { $obj->callSomething(); }` to just `$obj->callSomething();` by eliminating the conditional check in client code.

## Examples

Expand All @@ -21,4 +19,4 @@ a statement like `if (!is_null($obj)) { $obj->callSomething(); }` anymore.

## UML Diagram

![Alt NullObject UML Diagram](uml/uml.png)
![Alt NullObject UML Diagram](uml/uml.png)