訪問者模式(Visitor Pattern)是一種行為型設計模式,它用於將操作從元素的結構中分離出來。這種模式可以讓我們在不修改元素類別的情況下,定義新的操作。 以下是一個使用 PHP 語言的訪問者模式重構案例: // 元素接口 interface Element { public function accept(Visitor $visitor): void; } // 具體元素 A class ConcreteElementA implements Element { public function accept(Visitor $visitor): void { $visitor->visitConcreteElementA($this); } public function operationA(): string { return "ConcreteElementA: Operation A"; } } // 具體元素 B class ConcreteElementB implements Element { public function accept(Visitor $visitor): void { $visitor->visitConcreteElementB($this); } public function operationB(): string { return "ConcreteElementB: Operation B"; } } // 訪問者接口 interface Visitor { public function visitConcreteElementA(ConcreteElementA $elementA): void; ...
狀態模式(State Pattern)是一種行為型設計模式,它允許物件在內部狀態發生變化時改變其行為。這種模式將物件的行為封裝在不同的狀態類別中,使得物件能夠根據當前的狀態選擇不同的行為。 以下是一個使用 PHP 實現狀態模式的重構案例: / / Context(上下文)類別維護著當前狀態物件並委派相關的請求給該狀態物件 class Context { private $state; public function __construct(State $state) { $this->state = $state; } public function setState(State $state) { $this->state = $state; } public function request() { $this->state->handle($this); } } // State(狀態)介面聲明了具體狀態類別應實現的方法 interface State { public function handle(Context $context): void; } // ConcreteStateA(具體狀態A)實現 State 介面並提供具體的行為 class ConcreteStateA implements State { public function handle(Context $context): void { echo "ConcreteStateA: Handle\n"; // 狀態轉換 $context->setState(new C...
留言
張貼留言