設計模式在 PHP 中提供可重複的程式碼解決方案,提高程式碼的可維護性、可擴充性和可重複使用性。常見的模式包括:單例模式:確保只建立一個類別的實例。觀察者模式:允許一個物件通知多個物件其狀態變更。工廠方法模式:透過介面建立對象,將對象的建立與實作分開。
PHP 設計模式:最佳實踐探究
設計模式是可重複使用的程式碼解決方案,可用來解決常見的軟體設計問題。在 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; } }
觀察者模式
觀察者模式允許一個物件(發布者)通知多個物件(觀察者)有關其狀態變更。這在事件驅動的系統中很有用。以下是使用 PHP 實作觀察者模式的範例:
class Publisher { private $observers = []; public function addObserver(Observer $observer) { $this->observers[] = $observer; } public function notifyObservers() { foreach ($this->observers as $observer) { $observer->update(); } } } class Observer { public function update() {} }
#工廠方法模式
工廠方法模式允許透過一個介面建立對象,定義了建立方法。這可以將物件的建立與實作分離,從而提高可擴展性和可重複使用性。以下是使用PHP 實作工廠方法模式的範例:
interface Shape { public function draw(); } class Circle implements Shape { public function draw() { echo "Drawing a circle\n"; } } class Square implements Shape { public function draw() { echo "Drawing a square\n"; } } class ShapeFactory { public static function createShape(string $shapeType): Shape { if ($shapeType === 'circle') { return new Circle(); } elseif ($shapeType === 'square') { return new Square(); } throw new Exception("Invalid shape type: $shapeType"); } }
#實戰案例:購物車系統
單例模式:用於建立購物車中物品的全域列表。
觀察者模式:用於通知觀察者(例如使用者介面或電子郵件系統)有關購物車的變更。
工廠方法模式:用於建立購物車物品的不同類型(例如實體或虛擬物品)。
透過使用這些設計模式,可以創建一個可擴展、可維護且易於測試的購物車系統。
以上是PHP設計模式:最佳實務探究的詳細內容。更多資訊請關注PHP中文網其他相關文章!