PHP设计模式:与行为型编程的关系
短信预约 -IT技能 免费直播动态提醒
php 设计模式实现了行为型编程原则,通过定义明确的行为来创建可重复和松散耦合的代码。具体模式包括:观察者模式:定义订阅-发布关系,便于对象监听和响应事件。策略模式:允许在不同算法间切换,根据需要执行不同的操作。命令模式:将请求封装成对象,以参数化方式执行它们。
PHP 设计模式:与行为型编程的关系
行为型编程通过定义明确定义的行为,创建可重复和松散耦合的代码。PHP 提供了许多设计模式来实现行为型编程,让我们来探索它们。
观察者模式
观察者模式定义订阅-发布关系,其中一个对象(主题)可以发出通知,而其他对象(观察者)可以对其进行监听。
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"
策略模式
策略模式允许您根据需要在不同算法之间进行切换。
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
命令模式
命令模式将请求封装成对象,让您以参数化的方式执行它们。
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"
通过使用 PHP 中的行为型设计模式,您可以创建可重用、可维护且灵活的代码。
以上就是PHP设计模式:与行为型编程的关系的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341