码迷,mamicode.com
首页 > 其他好文 > 详细

空对象模式

时间:2015-10-11 00:22:16      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

在学习Head First设计模式中的“命令模式”过程中,偶然发现可以用在coding过程中的小技巧。赶紧记录,以备后用!

 

具体可以称之为“空对象”模式,而且专门用来处理对象为null的情形。

比如以下情形:

Command接口:

public interface Command {
    public void execute();
}

测试代码:

        Command[] commands = new Command[10];
        // initial commands[0] and the others is null
        Light light = new Light();
        commands[0] = new LightOnCommand(light);
        
        for (int i = 0; i < commands.length; i++) {
            if (commands[i] != null) {
                executeCommand(commands[i]);
            }
        }

这里的if条件判断是必须的,否则executeCommand(commands[i])在执行时就会报null的错误。

 

有没有办法避免写这样的判空代码呢?  答案是肯定的!那就是采用空对象!

直接上代码!

将测试代码中的commands数组用空对象进行初始化。

NoCommand(空对象):

public class NoCommand implements Command{

    @Override
    public void execute() {    }
    
}

测试代码:

        Command[] commands = new Command[10];
        Command noCommand = new NoCommand();
        for (int i = 0; i < commands.length; i++) {
            commands[i] = noCommand;
        }
        Light light = new Light();
        commands[0] = new LightOnCommand(light);
        for (int i = 0; i < commands.length; i++) {
            executeCommand(commands[i]);
        }

空对象模式

标签:

原文地址:http://www.cnblogs.com/hello-yz/p/4868601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!