2024-05-13

PHP设计模式:高级应用指南

答案:本文介绍了三种 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中文网其它相关文章!

https://www.php.cn/faq/789377.html

发表回复

Your email address will not be published. Required fields are marked *