美文网首页
PHP 实现空对象模式 2019-01-24

PHP 实现空对象模式 2019-01-24

作者: sudeare | 来源:发表于2019-01-24 09:31 被阅读0次

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。

在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方

abstract class AbstractCustomer

{

    protected $name;

    public abstract function isNil();

    public abstract function getName();

}

class CustomerFactory

{

    public static  $names = ["Rob", "Joe", "Julie"];

    public static function getCustomer($name)

{

        for ($i = 0; $i < sizeof(self::$names); $i++) {

            if (self::$names[$i] == ($name)){

                return new RealCustomer($name);

}

}

            return new NullCustomer();

}

}

class NullCustomer extends AbstractCustomer

{

    public function getName()

{

        return "Not Available in Customer Database"."</br>";

}

    public function isNil()

{

          return true;

}

}

class RealCustomer extends AbstractCustomer

{

    public function __construct($name)

{

        $this->name = $name;

}

    public function getName()

{

        return $this->name;

}

    public function isNil()

{

          return false;

}

}

class NullPatternDemo

{

    public static function main()

{

        $customer1 = CustomerFactory::getCustomer("Rob");

        $customer2 = CustomerFactory::getCustomer("Bob");

        $customer3 = CustomerFactory::getCustomer("Julie");

        $customer4 = CustomerFactory::getCustomer("Laura");

        print_r("Customers:"."<br/>");

        print_r("Rob:".$customer1->getName()."<br/>");

        print_r("Bob:".$customer2->getName()."<br/>");

        print_r("Julie:".$customer3->getName()."<br/>");

        print_r("Laura:".$customer4->getName()."<br/>");

}

}

相关文章

  • PHP 实现空对象模式 2019-01-24

    在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象...

  • 空对象模式,这个模式怎么用?

    空对象模式,还有这种模式? 空对象模式,应用在什么场景呢? 空对象模式(Null Object Pattern),...

  • 单例模式

    这几天在看PHP面向对象,设计模式与实现这本书。谈谈对单例模式的理解。 单例模式:在系统中需要一个对象来存储数据,...

  • 5. LAMP架构进阶

    4 php-fpm 模式实现LAMP 4.1 实现php-fpm(PHP FastCGI Proces Manag...

  • 前端常见的设计模式

    构造函数模式 混合模式(将父元素的原型链赋值给空对象F,再将空对象F赋值给子元素的原型链来实现继承同时不覆盖子元素...

  • 《PHP设计模式大全》系列分享专栏

    php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页 介绍php设计模式中的工厂模式...

  • 行为型模式-空对象模式

    空对象模式: 在空对象模式中,一个空对象取代NULL对象实例的检查。Null对象不是检查空值,而是反应一个不做任何...

  • ThinkPHP设计模式与Trait技术

    阅读原文 设计模式 单例模式 工厂模式 对象注册树 示例 运行 Trait技术 自 PHP 5.4.0 起,PHP...

  • 空对象模式

    一. 概念 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。N...

  • 空对象模式

网友评论

      本文标题:PHP 实现空对象模式 2019-01-24

      本文链接:https://www.haomeiwen.com/subject/pvzejqtx.html