Rumah >pembangunan bahagian belakang >tutorial php >Corak Reka Bentuk PHP: Soalan Lazim

Corak Reka Bentuk PHP: Soalan Lazim

WBOY
WBOYasal
2024-05-31 10:37:04540semak imbas

Corak reka bentuk PHP digunakan terutamanya untuk menyelesaikan masalah pengaturcaraan biasa, termasuk penyelesaian berikut: Corak pemerhati: mencapai gandingan longgar dengan memisahkan objek dan peristiwa. Corak Singleton: Pastikan kelas hanya mempunyai satu contoh. Mod strategi: mencapai kebolehskalaan melalui algoritma pertukaran.

Corak Reka Bentuk PHP: Soalan Lazim

Corak Reka Bentuk PHP: Soalan Lazim

Pengenalan

Corak reka bentuk ialah penyelesaian perisian boleh guna semula untuk menyelesaikan masalah pengaturcaraan biasa. Mereka menyediakan cara modular dan berstruktur untuk mengatur dan menulis kod. Dalam PHP, terdapat beberapa corak reka bentuk yang boleh digunakan untuk menyelesaikan pelbagai masalah.

Masalah biasa dan penyelesaian corak reka bentuknya

1. Bagaimana untuk mengelakkan gandingan yang ketat?

  • Corak pemerhati: Asingkan objek melalui acara dan pendengar untuk mencapai gandingan longgar.
//创建一个观察者
class Logger implements Observer {

    public function update(Subject $subject) {
        echo $subject->getState() . PHP_EOL;
    }
}

//创建一个主题
class User {

    private $observers = [];

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

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

    public function changeState($state) {
        $this->state = $state;
        $this->notify();
    }
}

//创建一个会话
$user = new User();

//创建一个记录器观察者
$logger = new Logger();

//将记录器观察者附加到用户
$user->attach($logger);

//更改用户状态并触发通知
$user->changeState('Logged in');

2. Bagaimana untuk melaksanakan corak tunggal?

  • Corak Singleton: Memastikan kelas hanya mempunyai satu tika dan menyediakan cara untuk mengakses tika itu secara global.
class Database {

    private static $instance = null;

    private function __construct() {}

    public static function getInstance() {
        if (self::$instance === null) {
            self::$instance = new self();
        }

        return self::$instance;
    }
}

//使用单例
$db = Database::getInstance();

3. Bagaimana untuk mencipta kod berskala?

  • Corak Strategi: Membenarkan algoritma pertukaran, sekali gus membolehkan kebolehskalaan.
interface SortStrategy {

    public function sort(array $data);
}

class BubbleSortStrategy implements SortStrategy {

    public function sort(array $data) {
        //冒泡排序算法
    }
}

class InsertionSortStrategy implements SortStrategy {

    public function sort(array $data) {
        //插入排序算法
    }
}

class Sorter {

    private $strategy;

    public function setStrategy(SortStrategy $strategy) {
        $this->strategy = $strategy;
    }

    public function sort(array $data) {
        $this->strategy->sort($data);
    }
}

//使用策略图案
$sorter = new Sorter();
$sorter->setStrategy(new BubbleSortStrategy());
$sorter->sort([1, 3, 2, 4]);

Atas ialah kandungan terperinci Corak Reka Bentuk PHP: Soalan Lazim. 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