单例模式
class sign {
// 声明一个静态属性,保证每次实现 sign 时,都是同一个对象
protected static $ins = null;
//封闭外部的 new 操作,由 getIns 方法实现
public static function getIns()
{
if (self::$ins == null)
self::$ins = new self();
return self::$ins;
}
// 构造方法改为 protected,禁止 new 多个 sign 对象
// final 关键字为了防止继承 sign 的类修改构造方法的权限
final protected function __construct(){}
// 防止通过 clone 方法创建出两个对象
final protected function __clone(){}
}
// 永远只能出现一个 sign 对象
$s1 = sign::getIns();
工厂方法模式
// 公共的数据库连接接口
interface db {
function conn();
}
interface Factory {
function createDB();
}
class dbMysql implements db {
public function coon()
{
echo '链接mysql';
}
}
class mysqlFactory implements Factory {
function createDB()
{
return new dbMysql();
}
}
// 如果想要继续添加一种新的数据库连接,不需要更改之前的代码,只需要添加新的数据库属相类和工厂
class dboracle implements db {
public function coon()
{
echo '链接mysql';
}
}
class oracleFactory implements Factory {
function createDB()
{
return new dboracle();
}
}
$fact = new mysqlFactory();
$fact->createDB();
观察者模式
- 被观察者发生变化时,观察者进行相应的改变
- 被观察者实现attach()、detach()和notify()方法,观察者实现update()方法
策略模式