以下是一些常见的PHP进阶模式实例,通过表格形式呈现,以便于查阅和理解。
| 设计模式 | 描述 | PHP实例 |
| --- | --- | --- |
| 单例模式 | 确保一个类只有一个实例,并提供一个访问它的全局访问点 |
class Singleton { private static $instance = null;
private function __construct() {}
public static function getInstance() {
if (self::$instance == null) {
self::$instance = new Singleton();
}
return self::$instance;
}
public function someMethod() {
// 方法实现
}
}
|| 工厂模式 | 定义一个用于创建对象的接口,让子类决定实例化哪一个类 |
interface Factory { public function create();
}
class ConcreteFactoryA implements Factory {
public function create() {
return new ProductA();
}
}
class ConcreteFactoryB implements Factory {
public function create() {
return new ProductB();
}
}
class ProductA {
// 产品A实现
}
class ProductB {
// 产品B实现
}
|| 观察者模式 | 当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新 |
interface Observer { public function update($subject);
}
class Subject {
private $observers = [];
private $state;
public function attach(Observer $observer) {
$this->observers[] = $observer;
}
public function detach(Observer $observer) {
$key = array_search($observer, $this->observers);
if ($key !== false) {
unset($this->observers[$key]);
}
}
public function notify() {
foreach ($this->observers as $observer) {
$observer->update($this);
}
}
public function setState($state) {
$this->state = $state;
$this->notify();
}
public function getState() {
return $this->state;
}
}
class ConcreteObserver implements Observer {
public function update($subject) {
echo "