PHP设计模式

2017-03-07  本文已影响26人  OSong

单例模式#

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

<?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();
上一篇下一篇

猜你喜欢

热点阅读