1. 팩토리 패턴: 객체 생성과 비즈니스 로직을 분리하고, 팩토리 클래스를 통해 지정된 유형의 객체를 생성합니다. 2. 관찰자 패턴: 주체 개체가 관찰자 개체에 상태 변경을 알리도록 허용하여 느슨한 결합 및 관찰자 패턴을 달성합니다.
PHP 디자인 패턴 실제 사례 분석
머리말
디자인 패턴은 일반적인 소프트웨어 디자인 문제에 대한 성숙한 솔루션입니다. 재사용 가능하고 유지 관리 가능하며 확장 가능한 코드를 만드는 데 도움이 됩니다. 이 기사에서는 PHP에서 가장 일반적으로 사용되는 디자인 패턴 중 일부를 살펴보고 실제 예제를 제공합니다.
Factory Pattern
객체를 생성하는 가장 좋은 방법은 인스턴스화 프로세스를 비즈니스 로직에서 분리하는 것입니다. 팩토리 패턴은 중앙 팩토리 클래스를 사용하여 생성할 객체 유형을 결정합니다.
실용 사례: 모양 팩토리 만들기
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.
관찰자 패턴
관찰자 패턴을 사용하면 하나의 개체(주체)가 다른 개체(관찰자)에게 상태 변경을 알릴 수 있습니다.
실용 사례: 블로그 시스템 만들기
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.
요약
실제 사례를 통해 팩토리 및 관찰자 디자인 패턴을 탐색하고 디자인 패턴이 코드 재사용성, 유지 관리성 및 확장성을 어떻게 향상시킬 수 있는지 보여주었습니다.
위 내용은 PHP 디자인 패턴 실제 사례 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!