zoukankan      html  css  js  c++  java
  • 常用的四种设计模式 PHP代码

      

    // 工厂模式
    
    interface Iuser
    {
        public function getUserName();
    }
    
    
    class UserFactory
    {
        static public function load($className)
        {
            return new strtolower($className);
        }
    
        static public function create($className)
        {
            return new strtolower($className);
        }
    }
    
    class User implements Iuser
    {
        public function getUserName()
        {
            return 'jack';
        }
    }
    
    UserFactory::create('User')->getUserName();
    
    
    // 单例模式
    
    class Singleton
    {
        static public function getInstance()
        {
            static $obj = null;
    
            if($obj == null) {
                return new Singleton();
            }
            return $obj;
        }
    
        public function getUserName()
        {
            return 'jack';
        }
    }
    
    Singleton::getInstance()->getUserName();
    
    
    // 观察者模式
    
    interface Observe
    {
        public function getUserName();
    }
    
    class User
    {
        private $servs = [];
        public function register($obj)
        {
            array_push($servs, $obj);
            return $this;
        }
    
        public function triggle()
        {
            if($this->servs) {
                foreach($this->servs as $key => $value) {
                    $value->getUserName();
                }
            }
        }
    }
    
    Class MyUser extends User implements Observ
    {
        public function getUserName()
        {
            return 'jack';
        }
    }
    
    
    (new User())->register(new MyUser)->triggle();

    // 策略模式
    
    interface Human
    {
        function speak();
    }
    
    class Chinese implements Human
    {
        
        public function speak()
        {
            echo '中国人说中文';
        }
    }
    
    class American implements Human
    {
        
        public function speak()
        {
            echo '美国人说英文';
        }
    }
  • 相关阅读:
    git的版本回退
    elementui的表格有多选框时翻页记住之前选择的数据
    git操作总结
    POJ 3107 Godfather
    HDU 4405 Aeroplane chess
    ZOJ 3626 Treasure Hunt I
    UVA 10537 Toll! Revisited
    POJ 3093 Margaritas on the River Walk
    POJ 1655 Balancing Act
    POJ 2342 Anniversary party
  • 原文地址:https://www.cnblogs.com/gpfeisoft/p/9275128.html
Copyright © 2011-2022 走看看