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