Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Analisis kes praktikal corak reka bentuk PHP

Analisis kes praktikal corak reka bentuk PHP

WBOY
WBOYasal
2024-05-08 08:09:02789semak imbas

1. Corak kilang: Asingkan penciptaan objek dan logik perniagaan, dan cipta objek jenis tertentu melalui kelas kilang. 2. Corak pemerhati: Membenarkan objek subjek memberitahu objek pemerhati tentang perubahan keadaan mereka, mencapai gandingan longgar dan corak pemerhati.

PHP 设计模式实战案例解析

Analisis Kes Praktikal Corak Reka Bentuk PHP

Kata Pengantar

Corak reka bentuk ialah penyelesaian matang kepada masalah reka bentuk perisian biasa. Mereka membantu mencipta kod yang boleh digunakan semula, boleh diselenggara dan boleh diperluaskan. Dalam artikel ini, kami akan meneroka beberapa corak reka bentuk yang paling biasa digunakan dalam PHP dan memberikan contoh praktikal.

Corak Kilang

Cara terbaik untuk mencipta objek ialah memisahkan proses instantiasi daripada logik perniagaan. Corak kilang menggunakan kelas kilang pusat untuk menentukan jenis objek yang hendak dibuat.

Kes Praktikal: Mencipta Kilang Bentuk

interface Shape {
  public function draw();
}

class Square implements Shape {
  public function draw() {
    echo "Drawing a square.\n";
  }
}

class Circle implements Shape {
  public function draw() {
    echo "Drawing a circle.\n";
  }
}

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

// Usage
$factory = new ShapeFactory();
$square = $factory->createShape("square");
$square->draw(); // 输出:Drawing a square.

Corak Pemerhati

Corak Pemerhati membenarkan satu objek (subjek) untuk memberitahu objek lain (pemerhati) tentang perubahan keadaan mereka.

Kes Praktikal: Mencipta Sistem Blog

interface Observer {
  public function update(Subject $subject);
}

class Subject {
  protected $observers = [];

  public function attach(Observer $observer) {
    $this->observers[] = $observer;
  }

  public function detach(Observer $observer) {
    $key = array_search($observer, $this->observers);
    if ($key !== false) {
      unset($this->observers[$key]);
    }
  }

  public function notify() {
    foreach ($this->observers as $observer) {
      $observer->update($this);
    }
  }
}

class Post extends Subject {
  private $title;
  private $body;

  // ... Post related methods

  public function publish() {
    $this->notify();
  }
}

class EmailObserver implements Observer {
  public function update(Subject $subject) {
    // Send an email notification for the new post.
  }
}

class PushObserver implements Observer {
  public function update(Subject $subject) {
    // Send a push notification for the new post.
  }
}

// Usage
$post = new Post();
$observer1 = new EmailObserver();
$observer2 = new PushObserver();
$post->attach($observer1);
$post->attach($observer2);
$post->publish(); // Sends email and push notifications for the new post.

Ringkasan

Kami meneroka corak reka bentuk kilang dan pemerhati melalui contoh praktikal, menggambarkan bagaimana corak reka bentuk boleh meningkatkan kebolehgunaan semula kod, kebolehselenggaraan dan jantina berskala.

Atas ialah kandungan terperinci Analisis kes praktikal corak reka bentuk PHP. 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