• php--php设计模式留存


    装饰者模式

    <?php
    
    interface Decorator
    {
        public function display();
    }
    
    class XiaoFang implements Decorator
    {
        private $name;
    
        public function __construct($name)
        {
            $this->name = $name;
        }
    
        public function display()
        {
            echo "我是".$this->name."我出门了!!!".'<br>';
        }
    }
    
    class Finery implements Decorator
    {
        private $component;
    
        public function __construct(Decorator $component)
        {
            $this->component = $component;
        }
    
        public function display()
        {
            $this->component->display();
        }
    }
    
    class Shoes extends Finery
    {
        public function display()
        {
            echo "穿上鞋子".'<br>';
            parent::display();
        }
    }
    
    class Skirt extends Finery
    {
        public function display()
        {
            echo "穿上衣服".'<br>';
            parent::display();
        }
    }
    
    class Fire extends Finery
    {
        public function display()
        {
            echo "出门前先整理头发".'<br>';
            parent::display();
            echo '出门后再整理一下头发'.'<br>';
        }
    }
    
    $xiaofang = new XiaoFang('小芳');
    $shoes = new Shoes($xiaofang);
    $skirt = new Skirt($shoes);
    $fire = new Fire($skirt);
    $fire->display();
    

    观察者模式

    <?php
    
    abstract class EventGenerator
    {
        private $observers = [];
    
        public function add(Observer $observer)
        {
            $this->observers[] = $observer;
        }
    
        public function notify()
        {
            foreach ($this->observers as $observer) {
                $observer->update();
            }
        }
    }
    
    interface Observer
    {
        public function update($eventInfo = null);
    }
    
    class Li implements Observer
    {
        public function update($eventInfo = null)
        {
            echo '观察者小李,收到通知,执行完毕!
    ';
        }
    }
    
    class Wang implements Observer
    {
        public function update($eventInfo = null)
        {
            echo '观察者小王,收到通知,执行完毕!
    ';
        }
    }
    
    class Event extends EventGenerator
    {
        public function trigger()
        {
            $this->notify();
        }
    }
    
    $event = new Event();
    $event->add(new Li());
    $event->add(new Wang());
    $event->trigger();
    
  • 相关阅读:
    android应用中增加权限判断
    android接收短信——framework处理流程(android 5.1)
    Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
    Java 集合系列02之 Collection架构
    Java 集合系列01之 总体框架
    远离职场中的舒适区
    中国式父母,到底缺少些什么?
    孙悟空:越风光,越可怜
    Android学习—RecyclerView的使用(2)
    Android学习—RecyclerView的使用(1)
  • 原文地址:https://www.cnblogs.com/peilanluo/p/10468309.html
Copyright © 2020-2023  润新知