以下是一些常见的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 "