zoukankan      html  css  js  c++  java
  • 设计模式案例(个人笔记)

    一、单例模式:

    <?php
    
    class Predis{
    
      public $redis = "";
    
      private static $_instance = null;
    
      public static function getInstance() {
    
        if(empty(self::$_instance)) {
    
          self::$_instance = new self();
    
        }
    
        return self::$_instance;
    
      }
    
     
    
      private function __construct() {
    
        $this->redis = new Redis();
    
        $result = $this->redis->connect(config('redis.host'), config('redis.port'), config('redis.timeOut'));
    
        if($result === false) {
    
          throw new Exception('redis connect error');
    
        }
    
      }
    
    }

    二、观察者模式

    <?php
    
    /**
     * 观察者模式
     */
    
    
    interface Observer
    {
        public function update();
    }
    
    abstract class EventGenerator
    {
        private $observers = [];
    
        public function addObserver(Observer $observer)
        {
            $this->observers[] = $observer;
        }
    
        public function notify()
        {
            foreach ($this->observers as $observer)
            {
                $observer->update();
            }
        }
    }
    
    // 事物生成类
    class Event extends EventGenerator
    {
        public function trigger()
        {
            echo "Event<br />
    ";
            $this->notify();
        }
    }
    
    //  观察者
    class Observer1 implements Observer
    {
        public function update()
        {
            echo "观察者1";
        }
    }
    
    class Observer2 implements Observer
    {
        public function update()
        {
            echo "观察者2";
        }
    }
    
    $event = new Event;
    $event->addObserver(new Observer1);
    $event->addObserver(new Observer2);
    $event->trigger();
  • 相关阅读:
    关于metaclass,我原以为我是懂的
    有趣的版本号
    关于乱序(shuffle)与随机采样(sample)的一点探究
    我在博客园的这一年
    我的进程去哪儿了,谁杀了我的进程
    Elasticsearch学习系列之term和match查询
    数据库垂直拆分 水平拆分
    分布式锁的几种实现原理
    Redis常见面题
    github建仓库注意
  • 原文地址:https://www.cnblogs.com/zhengchuzhou/p/9617279.html
Copyright © 2011-2022 走看看