设计模式

1.单例模式

场景:连接mysql、操作cookie只有一个对象去连接
原理:只能new一个对象(禁止new多个和clone)

class single{
protected static $sin = null;
//方法前加final不能被覆盖,类前加final不能被继承
//禁止外部NEW
final protected function __construct()
{
}
//禁止克隆
final protected function __clone()
{
// TODO: Implement __clone() method.
}

//设置内部
public static function getins(){
if(self::$sin === null){
self::$sin = new self();
}
return self::$sin;
}
}
$s1 = single::getins();
$s2 = single::getins();
if($s1 == $s2){
echo "是相同的";
}else{
echo "不是相同的";
}

2.工厂模式:工厂方法或者类生成对象,而不是在代码中直接new

interface db{
    function conn();
}

interface Factory{
    function createdb();
}

class dbmysql implements db{
    public function conn()
    {
        echo "连接了mysql";
    }
}

class dboracle implements db{
    public function conn()
    {
        echo "连接了oracle";
    }
}

class mysqlfac implements Factory{
    public function createdb()
    {
        return new dbmysql();
    }
}

class oraclefac implements Factory{
    public function createdb()
    {
        return new dboracle();
    }
}

$fac = new mysqlfac();
$db = $fac->createdb();
$db->conn();

$fac = new oraclefac();
$db = $fac->createdb();
$db->conn();
原文地址:https://www.cnblogs.com/finnlee/p/8502997.html