组合模式-结构型设计模式 [PHP]

 

以单个对象的方式来对待一组对象有一个接口类,有一个需实现的方法,其他所有类都实现它,在一个组合类的实现方法中循环调用另外其他类的方法

有一个公共的接口类

interface Renderable\n{\n    public function render(): string;\n}

组合类,也实现了接口

class Form implements Renderable\n{\n    private array $elements;\n    public function render(): string\n    {\n        //组合类里面循环调用其他类的同名方法\n        foreach ($this->elements as $element) {\n            $element->render();\n        }\n    }\n    public function addElement(Renderable $element)\n    {\n        $this->elements[] = $element;\n    }\n}

子项类,也实现了接口

class InputElement implements Renderable\n{\n    public function render(): string\n    {\n    }\n}\nclass TextElement implements Renderable\n{\n    public function render(): string\n    {\n    }\n}

使用的时候,像使用单一类一样使用组合类

$form = new Form();\n$form->addElement(new TextElement());\n$form->addElement(new InputElement());\n$form->render();

发表回复