diff --git a/null-object/etc/test.png b/null-object/etc/test.png index a29c0a617..bb08b0646 100644 Binary files a/null-object/etc/test.png and b/null-object/etc/test.png differ diff --git a/null-object/etc/test.ucls b/null-object/etc/test.ucls index 569663338..79fbc6e92 100644 --- a/null-object/etc/test.ucls +++ b/null-object/etc/test.ucls @@ -1,61 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/null-object/src/main/java/com/iluwatar/App.java b/null-object/src/main/java/com/iluwatar/App.java index 4bba5af29..f6bef29a0 100644 --- a/null-object/src/main/java/com/iluwatar/App.java +++ b/null-object/src/main/java/com/iluwatar/App.java @@ -18,14 +18,14 @@ public class App Node root = new NodeImpl("1", new NodeImpl("11", new NodeImpl("111", - new NullNode(), - new NullNode()), - new NullNode()), + NullNode.getInstance(), + NullNode.getInstance()), + NullNode.getInstance()), new NodeImpl("12", - new NullNode(), + NullNode.getInstance(), new NodeImpl("122", - new NullNode(), - new NullNode()))); + NullNode.getInstance(), + NullNode.getInstance()))); root.walk(); } diff --git a/null-object/src/main/java/com/iluwatar/NullNode.java b/null-object/src/main/java/com/iluwatar/NullNode.java index 5f0b440be..b63f561b4 100644 --- a/null-object/src/main/java/com/iluwatar/NullNode.java +++ b/null-object/src/main/java/com/iluwatar/NullNode.java @@ -1,33 +1,44 @@ -package com.iluwatar; - -/** - * - * Null Object implementation for binary tree node. - * - */ -public class NullNode implements Node { - - @Override - public int getTreeSize() { - return 0; - } - - @Override - public Node getLeft() { - return null; - } - - @Override - public Node getRight() { - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public void walk() { - } -} +package com.iluwatar; + +/** + * + * Null Object implementation for binary tree node. + * + * Implemented as Singleton, since all the NullNodes are the same. + * + */ +public class NullNode implements Node { + + private static NullNode instance = new NullNode(); + + private NullNode() { + } + + public static NullNode getInstance() { + return instance; + } + + @Override + public int getTreeSize() { + return 0; + } + + @Override + public Node getLeft() { + return null; + } + + @Override + public Node getRight() { + return null; + } + + @Override + public String getName() { + return null; + } + + @Override + public void walk() { + } +}