空对象模式

PHP代码:

<?php

abstract class AbstractCustomer{

  protected $name;
  public abstract function isNil();
  public abstract  function getName();
}


class RealCustomer extends AbstractCustomer {


    public function __construct($name)
    {
        $this->name = $name;    
    }

   public function getName() {
      return $this->name;   
   }


   public function isNil() {
      return false;   
   }

}

class NullCustomer extends AbstractCustomer {

    public function getName() {

       return "Not Available in Customer Database";    
    }


   public function isNil() {
      return true;   
   }


}
class CustomerFactory {

    #PHP中final不能修饰变量,但可以是类和方法
    public static  $names = ["Rob", "Joe", "Julie"];   

    public static function  getCustomer($name){
       //foreach更方便,如果说有点学习点地方就是静态变量必须用静态方法调用,self::$value 

        for ($i = 0; $i < count(self::$names); $i++) {
            if (self::$names[$i] == $name){
                return new RealCustomer($name);            
             }
        }
          return new NullCustomer();       
   }
}

class NullPatternDemo {
    public static function main() {

     $customer1 = CustomerFactory::getCustomer("Rob");     
     $customer2 = CustomerFactory::getCustomer("Bob");     
     $customer3 = CustomerFactory::getCustomer("Julie");     
     $customer4 = CustomerFactory::getCustomer("Laura");     
     echo "Customers".PHP_EOL;     
     echo $customer1->getName().PHP_EOL;     
     echo $customer2->getName().PHP_EOL;     
     echo $customer3->getName().PHP_EOL;     
     echo $customer4->getName().PHP_EOL;    
    }
}

NullPatternDemo::main();

/* *  执行程序,输出结果:    
localhost:bin fangliang$ php /Users/fangliang/Downloads/test.php   
 Customers    Rob    
 Not Available in Customer Database    
 Julie    
 Not Available in Customer Database 

* * */
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yijiliangfang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值