您的位置:首页 > 移动开发 > Objective-C

java设计模式进阶_null-object

2016-09-01 15:25 465 查看


//
//
//  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设计模式