首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

深入淺出 PHP 適配器模式(Adapter Pattern)

     編輯:PHP 綜合知識

在前幾篇文章中,我們已經詳細介紹了設計模式的特性,並深入剖析了四種創建型模式。創建型模式主要負責物件實例的建立方式,接下來我們將進入結構型模式的領域。

一、什麼是結構型模式?

結構型模式關注類別與物件的內部結構以及外部組合關係。它們透過優化程式架構,解決模組之間的耦合問題,使系統更具彈性與可維護性。

二、常見的結構型模式

  • 適配器模式
  • 橋接模式
  • 裝飾模式
  • 組合模式
  • 外觀模式
  • 享元模式
  • 代理模式

三、適配器模式(Adapter Pattern)詳解

定義:將一個類別的介面轉換成客戶端期望的另一個介面。適配器模式讓原本因介面不相容而無法合作的類別能夠協同工作。

適用場景:

  • 舊系統介面無法滿足新需求
  • 程式碼過於混亂,不便直接修改
  • 整合第三方函式庫

程式碼實作

以下範例展示如何將舊版 User 類別適配至新版 UserInterface 介面:

// 舊版程式碼
class User {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

// 新版開放平台標準介面
interface UserInterface {
    public function getUserName();
}

class UserInfo implements UserInterface {
    protected $user;

    public function __construct($user) {
        $this->user = $user;
    }

    public function getUserName() {
        return $this->user->getName();
    }
}

// 使用示例
$oldUser = new User('張三');
echo $oldUser->getName() . "\n";

$newUser = new UserInfo($oldUser);
echo $newUser->getUserName() . "\n";

關鍵設計重點

此處採用組合(Composition)而非繼承:UserInfo 內部持有 User 物件參考。這樣做符合「合成/聚合復用原則」,保持模組間鬆耦合。若改用繼承(UserInfo extends User),雖然也能達到相同功能,但會導致高耦合,父類別變動會直接影響子類別。

以上就是 PHP 設計模式中結構型模式——適配器模式的核心內容。若有疑問,歡迎留言交流!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved