ホームページ >バックエンド開発 >PHPチュートリアル >PHPデザインパターン組み合わせパターン

PHPデザインパターン組み合わせパターン

WBOY
WBOYオリジナル
2016-06-23 13:03:17906ブラウズ

組み合わせパターンは構造パターンに属します

概要: オブジェクトをツリー構造に結合して、「部分全体」の階層を表します。合成パターンにより、ユーザーは単一オブジェクトと複合オブジェクトを一貫して使用できるようになります。

合成と集約はどちらも、クラスが他のクラスの 1 つ以上のインスタンスを長期間保持する状況を表します。

集約: 含まれるオブジェクトはコンテナの中核部分ですが、他のオブジェクトに含まれることもあります。集約関係は、白抜きのひし形で始まる線で示されています。

構成: 含まれるオブジェクトは、そのコンテナーによってのみ参照できます。コンテナを削除する場合は、コンテナも削除する必要があります。結合関係のダイヤモンドはしっかりしています

/**

* 実行部隊

*/

抽象クラス Unit{

public function BombardStrength();

}

/ * *

* アーチャー

*/

class ArcherUnit extends Unit{

public function BombardStrength(){

return 4;

}

}

/**

* レーザーキャノン

*/

class LaserCannonUnit extends Unit{

public function BombardStrength(){

return 10;

}

}

/**

* 陸軍

*/

class Arm{

private $単位 = array();

private $strength = 0;

public function addUnit(Unit $unit){

array_push($this->units, $unit);

}

public function BombardStrength() {

foreach ($this->単位を $unit として){

$this->strength += $unit->bombardStrength();

}

}

}

/**

* コンビネーションモード

*/

public function actionCombine(){

$archer = new ArcherUnit;

$laserCannon = new LaserCannonUnit;

$arm = new Arm;

$arm->addUnit ( $archer);

$arm->addUnit($laserCannon);

echo $arm->bombardStrength();

}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。