设计模式
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();