美文网首页
PHP设计模式

PHP设计模式

作者: OSong | 来源:发表于2017-03-07 19:52 被阅读26次

    单例模式#

    每次实例化都是同一个对象

    • 构造函数必须私有化;
    • 通过静态的成员属性来保存实例化后对象;
    • 实例化必须通过静态的成员方法来new self.
    <?php
    class Single
    {
        static public $link;
    
        //构造函数私有化
        private function __construct()
        {
            return $this->connect();
        }
    
        private function connect()
        {
            return "我已经连接了数据库";
        }
            //实例化必须通过静态的成员方法来new self
        static public function getInstanse()
        {
            if(self::$link)
            {
                echo '我刚被调用';
                return self::$link;
            } else {
                echo '我第一';
               //通过静态的成员属性来保存实例化后对象
                self::$link = new self();
                return self::$link;
            }
        }
    }
    $obj = Single::getInstanse();
    $obj2 = Single::getInstanse();
    $obj3 = Single::getInstanse();
    if($obj === $obj2)
    {
        echo '一样';
    }else{
        echo '不一样';
    }
    

    工厂设计模式##

    通过编写一个工厂方法来实例化不同的类
    正方形
    工厂里面的标准就是接口

    <?php
    interface Shape
    {
        public function down();
    }
    
    class SquareShape implements Shape
    {
        public function down()
        {
            echo '正方形的方块在TM的往下掉';
        }
    }
    
    class RectangleShape implements Shape
    {
        public function down()
        {
            echo '矩形的方块在往下掉';
        }
    }
    
    class ThreeShape implements Shape
    {
        public function down()
        {
            echo '三角形往下掉';
        }
    }
    
    class ShapeFactory
    {
        public function __construct()
        {
    
        }
    
        static public function create($name)
        {
            $name = $name.'Shape';
            return new $name();
        }
    }
    
    $shape_array = ['Square','Rectangle', 'Three'];
    $rand = mt_rand(0, count($shape_array)-1);
    $obj = ShapeFactory::create($shape_array[$rand]);
    $obj->down();
    

    相关文章

      网友评论

          本文标题:PHP设计模式

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