Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Entwurfsmuster: Ein Leitfaden für fortgeschrittene Anwendungen

PHP-Entwurfsmuster: Ein Leitfaden für fortgeschrittene Anwendungen

PHPz
PHPzOriginal
2024-06-04 15:38:00279Durchsuche

Antwort: In diesem Artikel werden drei PHP-Entwurfsmuster vorgestellt: Singleton-Muster, Proxy-Muster und Adaptermuster. Detaillierte Beschreibung: Das Singleton-Muster stellt sicher, dass nur eine Instanz einer Klasse erstellt wird und stellt so einen globalen Zugriffspunkt bereit. Das Proxy-Muster stellt eine Ebene einer Proxy-Schnittstelle zu einem anderen Objekt bereit, um den Zugriff oder die Kontrolle zu verbessern. Das Adaptermuster ermöglicht die gemeinsame Verwendung kompatibler und inkompatibler Klassen, sodass sie mit vorhandenem Clientcode funktionieren.

PHP-Entwurfsmuster: Ein Leitfaden für fortgeschrittene Anwendungen

PHP Design Patterns: Advanced Application Guide

Singleton Pattern

Das Singleton Pattern stellt sicher, dass eine Klasse nur eine Instanz hat und stellt einen globalen Zugriffspunkt bereit.

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();

Proxy-Muster

Das Proxy-Muster stellt eine Ebene des Schnittstellen-Proxys für ein anderes Objekt bereit. Es verbessert den Zugriff oder die Kontrolle über das Zielobjekt.

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();

Adaptermuster

Das Adaptermuster ermöglicht die Verwendung einer inkompatiblen Klasse mit vorhandenem Clientcode.

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);

Das obige ist der detaillierte Inhalt vonPHP-Entwurfsmuster: Ein Leitfaden für fortgeschrittene Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn