首頁  >  文章  >  後端開發  >  PHP設計模式:進階應用指南

PHP設計模式:進階應用指南

PHPz
PHPz原創
2024-06-04 15:38:00229瀏覽

答案:本文介紹了三種 PHP 設計模式:單例模式、代理模式和適配器模式。詳細描述:單例模式可確保僅建立一個類別實例,提供全域存取點。代理模式為另一個物件提供一層代理接口,增強存取或控制權。適配器模式允許相容與不相容的類別一起使用,使它們與現有客戶端程式碼協同工作。

PHP設計模式:進階應用指南

PHP 設計模式:進階應用指南

單例模式

單例模式保證一個類別只有一個實例,並且提供了全域存取點。

class Singleton {
  private static $instance;

  private function __construct() {
    // ...
  }

  public static function getInstance(): Singleton {
    if (!isset(self::$instance)) {
      self::$instance = new Singleton();
    }
    return self::$instance;
  }
}

// 使用
$instance = Singleton::getInstance();

代理模式

代理模式為另一個物件提供一層介面代理。它可以增強目標物件的存取或控制權。

class DBConnection {
  private $host;
  private $user;
  // ...

  public function connect() {
    // ...
  }
}

class DBConnectionProxy {
  private $connection;

  public function connect() {
    if (!$this->connection) {
      $this->connection = new DBConnection();
      $this->connection->connect();
    }
    return $this->connection;
  }
}

// 使用
$proxy = new DBConnectionProxy();
$connection = $proxy->connect();

適配器模式

適配器模式使一個不相容的類別可以與現有的客戶端程式碼一起使用。

class OldPaymentSystem {
  public function charge($amount) {
    // ...
  }
}

class NewPaymentSystem {
  public function pay($amount) {
    // ...
  }
}

class PaymentSystemAdapter {
  private $oldSystem;

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

  public function pay($amount) {
    $this->oldSystem->charge($amount);
  }
}

// 使用
$oldSystem = new OldPaymentSystem();
$adapter = new PaymentSystemAdapter($oldSystem);
$adapter->pay(100);

以上是PHP設計模式:進階應用指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn