2.7. 组合模式
uml
代码实现
<?php
//抽象form类
interface FormInterface{
public function render();
}
class Text implements FormInterface
{
public function render()
{ return '<input type="text" />'.PHP_EOL;
}
}
class Number implements FormInterface
{
public function render()
{
return '<input type="number"/>'.PHP_EOL;
}
}
class Form implements FormInterface
{
protected $elements = []; //所有对象
public function render()
{
$html = '';
foreach ($this->elements as $element){
$html .= $element->render();
}
return $html;
}
public function addElement(FormInterface $element)
{
$this->elements[] = $element;
}
}
$form = new Form();
$form->addElement(new Text());
$form->addElement(new Text());
$form->addElement(new Number());
echo $form->render();