Maison >développement back-end >tutoriel php >Modèles de conception PHP : un guide d'application avancé

Modèles de conception PHP : un guide d'application avancé

PHPz
PHPzoriginal
2024-06-04 15:38:00284parcourir

Réponse : Cet article présente trois modèles de conception PHP : le modèle singleton, le modèle proxy et le modèle d'adaptateur. Description détaillée : le modèle singleton garantit qu'une seule instance d'une classe est créée, fournissant ainsi un point d'accès global. Le modèle de proxy fournit une couche d'interface proxy avec un autre objet pour améliorer l'accès ou le contrôle. Le modèle Adapter permet d’utiliser ensemble des classes compatibles et incompatibles, ce qui les fait fonctionner avec le code client existant.

Modèles de conception PHP : un guide dapplication avancé

Modèles de conception PHP : Guide d'application avancé

Modèle Singleton

Le modèle singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global.

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

Modèle de proxy

Le modèle de proxy fournit une couche de proxy d'interface pour un autre objet. Il améliore l'accès ou le contrôle de l'objet cible.

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

Modèle d'adaptateur

Le modèle d'adaptateur permet d'utiliser une classe incompatible avec le code client existant.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn