//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : Node.java
// @ Date : 2016/9/1
// @ Author :
//
//
public interface Node {
public String getName();
public int getTreeSize();
public Node getLeft();
public Node getRight();
public void walk();
}
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : NodeImpl.java
// @ Date : 2016/9/1
// @ Author :
//
//
public class NodeImpl implements Node {
private final String name;
private final Node left;
private final Node right;
public NodeImpl(String name, Node left, Node right) {
this.name = name;
this.left = left;
this.right = right;
}
public int getTreeSize() {
return 1 + left.getTreeSize() + right.getTreeSize();
}
public Node getLeft() {
return left;
}
public Node getRight() {
return right;
}
public void walk() {
System.out.println(name);
if(left.getTreeSize() > 0)
left.walk();
if(right.getTreeSize() > 0)
right.walk();
}
@Override
public String getName() {
return name;
}
}
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : NullNode.java
// @ Date : 2016/9/1
// @ Author :
//
//
public class NullNode implements Node {
public String getName() {
return null;
}
public int getTreeSize() {
return 0;
}
public Node getLeft() {
return null;
}
public Node getRight() {
return null;
}
public void walk() {
}
}
public class App {
public static void main(String[] args) {
Node root = new NodeImpl(
"1",
new NodeImpl("11",
new NodeImpl("111", new NullNode(), new NullNode()),
new NullNode()
),
new NodeImpl("12",
new NullNode(),
new NodeImpl("122", new NullNode(), new NullNode())
)
);
root.walk();
}
}
//
//1
//11
//111
//12
//122
java设计模式进阶_null-object
最新推荐文章于 2024-06-28 23:20:23 发布