空对象模式

当我们不想返回一个有意义的对象时,空对象就很有用。它可以简化我们的代码,也可以方便我们的测试(不要考虑太多条件)。

返回一个对象或 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();
  }
}