Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Corak reka bentuk PHP: hubungan dengan pengaturcaraan tingkah laku

Corak reka bentuk PHP: hubungan dengan pengaturcaraan tingkah laku

WBOY
WBOYasal
2024-06-04 22:33:591021semak imbas

Corak reka bentuk PHP melaksanakan prinsip pengaturcaraan tingkah laku untuk mencipta kod yang boleh diulang dan digandingkan secara longgar melalui gelagat yang jelas. Corak khusus termasuk: Corak pemerhati: mentakrifkan perhubungan penerbitan langganan untuk memudahkan objek memantau dan bertindak balas kepada acara. Mod strategi: membenarkan pertukaran antara algoritma berbeza dan melaksanakan operasi berbeza mengikut keperluan. Mod arahan: Merangkum permintaan ke dalam objek dan melaksanakannya dengan cara berparameter.

Corak reka bentuk PHP: hubungan dengan pengaturcaraan tingkah laku

Corak Reka Bentuk PHP: Hubungan dengan Pengaturcaraan Tingkah Laku

Pengaturcaraan tingkah laku mencipta kod yang boleh diulang dan digandingkan secara longgar dengan mentakrifkan tingkah laku yang jelas. PHP menyediakan banyak corak reka bentuk untuk pengaturcaraan tingkah laku, mari kita terokainya.

Corak Pemerhati

Corak Pemerhati mentakrifkan hubungan langganan-terbit di mana satu objek (topik) boleh mengeluarkan pemberitahuan dan objek lain (pemerhati) boleh mendengarnya.

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

class ConcreteObserver1 implements Observer {
    public function update($subject) {
        echo "ConcreteObserver1 received update from $subject\n";
    }
}

class ConcreteObserver2 implements Observer {
    public function update($subject) {
        echo "ConcreteObserver2 received update from $subject\n";
    }
}

class Subject {
    private $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);
        }
    }
}

// 实战案例
$subject = new Subject();
$observer1 = new ConcreteObserver1();
$observer2 = new ConcreteObserver2();
$subject->attach($observer1);
$subject->attach($observer2);
$subject->notify(); // 输出:"ConcreteObserver1 received update from Subject" 和 "ConcreteObserver2 received update from Subject"

Mod Strategi

Mod Strategi membolehkan anda menukar antara algoritma berbeza mengikut keperluan.

interface Strategy {
    public function doOperation($a, $b);
}

class ConcreteStrategyA implements Strategy {
    public function doOperation($a, $b) {
        return $a + $b;
    }
}

class ConcreteStrategyB implements Strategy {
    public function doOperation($a, $b) {
        return $a - $b;
    }
}

class Context {
    private $strategy;

    public function __construct(Strategy $strategy) {
        $this->strategy = $strategy;
    }

    public function doOperation($a, $b) {
        return $this->strategy->doOperation($a, $b);
    }
}

// 实战案例
$context = new Context(new ConcreteStrategyA());
echo $context->doOperation(10, 5); // 输出:15

$context = new Context(new ConcreteStrategyB());
echo $context->doOperation(10, 5); // 输出:5

Corak Perintah

Corak arahan merangkum permintaan ke dalam objek, membolehkan anda melaksanakannya dalam cara berparameter.

interface Command {
    public function execute();
}

class ConcreteCommand implements Command {
    private $receiver;

    public function __construct($receiver) {
        $this->receiver = $receiver;
    }

    public function execute() {
        $this->receiver->action();
    }
}

class Receiver {
    public function action() {
        echo "Receiver action executed\n";
    }
}

class Invoker {
    private $commands = [];

    public function setCommand(Command $command) {
        $this->commands[] = $command;
    }

    public function invoke() {
        foreach ($this->commands as $command) {
            $command->execute();
        }
    }
}

// 实战案例
$receiver = new Receiver();
$command = new ConcreteCommand($receiver);
$invoker = new Invoker();
$invoker->setCommand($command);
$invoker->invoke(); // 输出:"Receiver action executed"

Dengan menggunakan corak reka bentuk tingkah laku dalam PHP, anda boleh membuat kod yang boleh digunakan semula, boleh diselenggara dan fleksibel.

Atas ialah kandungan terperinci Corak reka bentuk PHP: hubungan dengan pengaturcaraan tingkah laku. 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