Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang corak reka bentuk PHP dalam amalan

Penjelasan terperinci tentang corak reka bentuk PHP dalam amalan

PHPz
PHPzasal
2024-05-07 13:57:01477semak imbas

Corak reka bentuk menyediakan penyelesaian yang terbukti kepada reka bentuk perisian, menyelesaikan masalah pengaturcaraan biasa. Artikel ini melihat secara mendalam corak reka bentuk biasa dalam PHP dan menerangkannya melalui kes praktikal, meliputi corak tunggal, corak kaedah kilang dan corak pemerhati.

PHP 设计模式实战详解

Penjelasan praktikal terperinci tentang corak reka bentuk PHP

Corak reka bentuk menyediakan satu set penyelesaian terbukti untuk reka bentuk perisian untuk menyelesaikan masalah pengaturcaraan biasa. Artikel ini akan menyelidiki corak reka bentuk yang biasa digunakan dalam PHP dan menggambarkannya melalui kes praktikal.

Corak singleton

Corak singleton memastikan bahawa kelas dibuat seketika sahaja. Ini berguna untuk sumber global atau pengurus konfigurasi.

class Database {
  private static ?\PDO $instance = null;

  private function __construct() {}

  public static function getInstance(): \PDO {
    if (self::$instance === null) {
      self::$instance = new \PDO('mysql:host=localhost;dbname=my_db', 'user', 'password');
    }

    return self::$instance;
  }
}

// 使用 Singleton
$db1 = Database::getInstance();
$db2 = Database::getInstance();

// 两个变量指向同一个 PDO 对象
var_dump($db1 === $db2); // true

Corak Kaedah Kilang

Corak Kaedah Kilang mentakrifkan antara muka yang mencipta objek tetapi membenarkan subkelas menukar proses penciptaan. Ini menyediakan cara yang fleksibel untuk memisahkan logik penciptaan dan kelas produk.

interface Shape {
  public function draw(): void;
}

class Circle implements Shape {
  public function draw(): void {
    echo 'Drawing a circle.' . PHP_EOL;
  }
}

class Square implements Shape {
  public function draw(): void {
    echo 'Drawing a square.' . PHP_EOL;
  }
}

class ShapeFactory {
  public static function createShape(string $type): Shape {
    switch ($type) {
      case 'circle':
        return new Circle();
      case 'square':
        return new Square();
      default:
        throw new InvalidArgumentException('Invalid shape type.');
    }
  }
}

// 使用工厂方法
$circle = ShapeFactory::createShape('circle');
$square = ShapeFactory::createShape('square');

$circle->draw(); // Drawing a circle.
$square->draw(); // Drawing a square.

Corak Pemerhati

Corak Pemerhati mentakrifkan hubungan pergantungan satu-ke-banyak, di mana satu objek (subjek) boleh memberitahu berbilang objek (pemerhati) tentang perubahan keadaan.

rreeee

Atas ialah kandungan terperinci Penjelasan terperinci tentang corak reka bentuk PHP dalam amalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn