[PHP] 組合模式-結構型設計模式
阿新 • • 發佈:2020-10-16
以單個物件的方式來對待一組物件
有一個介面類,有一個需實現的方法,其他所有類都實現它,在一個組合類的實現方法中迴圈呼叫另外其他類的方法
有一個公共的介面類
interface Renderable { public function render(): string; }
組合類,也實現了介面
class Form implements Renderable { private array $elements; public function render(): string { //組合類裡面迴圈呼叫其他類的同名方法 foreach($this->elements as $element) { $element->render(); } } public function addElement(Renderable $element) { $this->elements[] = $element; } }
子項類,也實現了介面
class InputElement implements Renderable { public function render(): string { } }class TextElement implements Renderable { public function render(): string { } }
使用的時候,像使用單一類一樣使用組合類
$form = new Form(); $form->addElement(new TextElement()); $form->addElement(new InputElement()); $form->render();