网站首页 > 知识剖析 正文
组合模式属于结构型模式
概述:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
组合和聚合都描述一个类长期持有其他类的一个或多个实例的情况。
聚合:被包含对象是容器的核心部分,但是他们也可以被其他对象所包含。聚合关系用一条以空心菱形开头的线来说明。
组合:被包含的对象只能被它的容器所引用。当容器被删除时,它也应该被删除。组合关系的菱形是实心的
<?php
/**
* 执行单元
*/
abstract class Unit{
public function bombardStrength();
}
<?php
/**
* 弓箭手
*/
class ArcherUnit extends Unit{
public function bombardStrength(){
return 4;
}
}
<?php
/**
* 激光大炮
*/
class LaserCannonUnit extends Unit{
public function bombardStrength(){
return 10;
}
}
<?php
/**
* 军队
*/
class Arm{
private $units = array();
private $strength = 0;
public function addUnit(Unit $unit){
array_push($this->units, $unit);
}
public function bombardStrength(){
foreach ($this->units as $unit){
$this->strength += $unit->bombardStrength();
}
}
}
<?php
/**
* 组合模式
*/
public function actionCombine(){
$archer = new ArcherUnit;
$laserCannon = new LaserCannonUnit;
$arm = new Arm;
$arm->addUnit($archer);
$arm->addUnit($laserCannon);
echo $arm->bombardStrength();
}
猜你喜欢
- 2025-09-01 JavaScript去除数组重复元素的几种方法
- 2025-09-01 JavaScript奇淫技巧:利用数组加密并压缩代码
- 2025-09-01 七爪源码:修复 JavaScript 错误的 4 种方法
- 2025-09-01 我是如何使用ChatGPT和CoPilot作为编码助手的
- 2025-09-01 12种JavaScript中最常用的数组操作整理汇总
- 2025-09-01 深入JavaScript教你内存泄漏如何防范
- 2025-09-01 Javascript中的字符串拼接_javascript 字符串拼接
- 2025-09-01 JavaScript 合并数组的三种方法_javascript合并对象
- 2025-09-01 js中数组filter方法的使用和实现_js数组 filter
- 2025-09-01 使用js把某个乱序的数组变成升序序或者降序的数组的方法
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)