空对象模式
当我们不想返回一个有意义的对象时,空对象就很有用。它可以简化我们的代码,也可以方便我们的测试(不要考虑太多条件)。
返回一个对象或 null 应该用返回对象或者 NullObject 代替。NullObject 简化了死板的代码,消除了客户端代码中的条件检查,例如
if (!is_null($obj)) { $obj->method(); }
只需 $obj->method();
就行。
我们在命令模式中就经常会使用空对象模式。
interface Command
{
public function execute ();
}
class NoCommand implements Command
{
public function execute()
{
}
}
class Invoke
{
private $command = null;
public function __construct(Command $command)
{
$this->command = $command;
}
public function call ()
{
$this->command->execute();
}
}