组合模式属于结构型模式
概述:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
组合和聚合都描述一个类长期持有其他类的一个或多个实例的情况。
聚合:被包含对象是容器的核心部分,但是他们也可以被其他对象所包含。聚合关系用一条以空心菱形开头的线来说明。
组合:被包含的对象只能被它的容器所引用。当容器被删除时,它也应该被删除。组合关系的菱形是实心的
/**
* 执行单元
*/
abstract class unit{
public function bombardstrength();
}
/**
* 弓箭手
*/
class archerunit extends unit{
public function bombardstrength(){
return 4;
}
}
units as $unit){
$this->strength += $unit->bombardstrength();
}
}
}
addunit($archer);
$arm->addunit($lasercannon);
echo $arm->bombardstrength();
}