조합 모드는 구조 설계 모드이며, 주로 여러 객체를 트리 구조로 결합하여 "파트 토탈"의 계층 적 관계를 표현하는 데 사용됩니다. 클라이언트는 동일한 방식으로 단일 및 결합 된 객체를 처리 할 수 있으므로 코드 구조를 크게 단순화합니다. 이 기사는 Starcraft를 예제로 취하여 조합 모드의 적용을 자세히 보여줍니다.
Starcraft에는 우리의 일반적인 캐릭터로는 군대, 군인 및 탱크가 포함됩니다. 이러한 역할의 동작은 아래의 PHP 코드에 의해 정의됩니다.
abstract class Unit
{
abstract public function attack();
}
class Soldier extends Unit
{
public function attack()
{
echo "군인 공격!";
}
}
class Tank extends Unit
{
public function attack()
{
echo "탱크 공격!";
}
}
class Army extends Unit
{
private $units = [];
public function addUnit(Unit $unit)
{
$this->units[] = $unit;
}
public function attack()
{
foreach ($this->units as $unit) {
$unit->attack();
echo "";
}
}
}
군대 (군대)는 조합 대상이며, 군인과 탱크는 잎 대상입니다. 군대는 여러 군인과 탱크를 포함 할 수 있으며 통일 된 방식으로 공격 명령을 발행 할 수 있습니다.
$army = new Army();
$army->addUnit(new Soldier());
$army->addUnit(new Soldier());
$army->addUnit(new Tank());
육군의 공격 방법에 전화하면 모든 회원이 한 번에 공격하도록 명령 할 수 있습니다.
$army->attack();
실행 결과는 차례로 출력됩니다.
군인 공격!
군인 공격!
탱크 공격!
이러한 방식으로, 조합 모드를 사용하면 복잡한 객체 구조를 통합 방식으로 관리 할 수 있으므로 코드의 유연성과 유지 보수 성을 크게 향상시킵니다.
조합 모드는 트리 모양의 객체 구조를 구축하여 단일 객체와 결합 된 물체의 처리를 단순화합니다. Starcraft 게임 예제에서, 우리는 군대와 그 구성원의 통합 관리를 성공적으로 구현했습니다. 조합 모드는 코드를 더 명확하게 만들뿐만 아니라 복잡한 시스템 설계에 대한 확장 성을 제공합니다.