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 디자인 패턴: 행동 프로그래밍과의 관계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!