java设计模式进阶_null-object

这里写图片描述


//
//
//  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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值