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
Libérer: 2024-06-04 15:38:00
original
295 Les gens l'ont consulté

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();
Copier après la connexion

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();
Copier après la connexion

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);
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal