组合模式

组合模式

PHP 实现:

/**

* Class Employee

* 雇员类

*/

class Employee

{

private $_name;

private $_dept;//部门

private $_salary;//薪水

private $_subordinates;//下属

public function __construct(string $name, string $dept, int $sal)

{

$this->_name = $name;

$this->_dept = $dept;

$this->_salary = $sal;

$this->_subordinates = [];

}

public function add(Employee $employee)

{

array_push($this->_subordinates, $employee);

}

public function remove(Employee $employee)

{

$this->_subordinates = array_filter($this->_subordinates, function ($v) use ($employee) {

return ($employee != $v);

});

}

public function getSubordinates()

{

return $this->_subordinates;

}

public function __toString()

{

// TODO: Implement __toString() method.

return "Employee: [name: " . $this->_name . ",dept: " . $this->_dept . ",salary: " . $this->_salary . "]";

}

}

class Demo

{

public static function main()

{

$CEO = new Employee("John", "CEO", 30000);

$headSales = new Employee("Robert", "Head Sales", 20000);

$headMarketing = new Employee("Michel", "Head Marketing", 20000);

$clerk1 = new Employee("Laura", "Marketing", 10000);

$clerk2 = new Employee("Bob", "Marketing", 10000);

$salesExecutive1 = new Employee("Richard", "Sales", 10000);

$salesExecutive2 = new Employee("Rob", "Sales", 10000);

$CEO->add($headSales);

$CEO->add($headMarketing);

$headSales->add($salesExecutive1);

$headSales->add($salesExecutive2);

$headMarketing->add($clerk1);

$headMarketing->add($clerk2);

echo $CEO . PHP_EOL;

$headMarketing->remove($clerk2);

foreach ($CEO->getSubordinates() as $employee) {

echo '-' . $employee . PHP_EOL;

foreach ($employee->getSubordinates() as $e) {

echo '---' . $e . PHP_EOL;

}

}

}

}

Demo::main();泡水鱼干 泡水鱼干

626***755@qq.com

5年前 (2020-05-13)

相关推荐

六福珠宝今日金价
365篮球直播吧App

六福珠宝今日金价

📅 06-27 👁️ 6590
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
11选5玩法中奖规则 11选5中奖价格表
48365大写

11选5玩法中奖规则 11选5中奖价格表

📅 08-01 👁️ 1240
艄的解释
365bet提款多久到账

艄的解释

📅 07-10 👁️ 4630
u盘里隐藏的文件怎么显示
365篮球直播吧App

u盘里隐藏的文件怎么显示

📅 07-02 👁️ 9443
教你画海底世界简笔画图片
48365大写

教你画海底世界简笔画图片

📅 08-01 👁️ 9008
帮助中心
365bet提款多久到账

帮助中心

📅 07-04 👁️ 7463
黑執事角色列表
48365大写

黑執事角色列表

📅 07-01 👁️ 8821
华裔球员陈达毅拒绝世界杯劲旅邀请,坚定等国足归化,未来充满期待