本文共 2555 字,大约阅读时间需要 8 分钟。
name=$name; } abstract public function add(Company $c); abstract public function remove(Company $c); abstract public function display($depth); abstract public function lineofduty();}//具体公司类class ConcreteCompany extends Company{ private $children=array(); public function __construct($name){ parent::__construct($name); } public function add(Company $c){ if(! in_array($c, $this->children)){ $this->children[]=$c; } } public function remove(Company $c){ if(in_array($c, $this->children)){ $pos=array_search($c,$this->children); unset($this->children[$pos]); } } public function display($depth){ $str='__'; for($i=0;$i<$depth;$i++){ $str.=$str; } echo $str.$this->name.''; foreach ($this->children as $c) { $c->display($depth+1); } } public function lineofduty(){ foreach ($this->children as $c) { $c->lineofduty(); } }}//人力资源部class HRDepartment extends Company{ public function __construct($name){ parent::__construct($name); } public function add(Company $c){} public function remove(Company $c){} public function display($depth){ $str='__'; for($i=0;$i<$depth;$i++){ $str.=$str; } echo $str.$this->name.''; } public function lineofduty(){ echo $this->name.':职责---员工的招聘培训管理'.''; }}//财务部class FinaceDepartment extends Company{ public function __construct($name){ parent::__construct($name); } public function add(Company $c){} public function remove(Company $c){} public function display($depth){ $str='__'; for($i=0;$i<$depth;$i++){ $str.=$str; } echo $str.$this->name.''; } public function lineofduty(){ echo $this->name.':职责---公司财务收支管理'.''; }}// 客户端$root=new ConcreteCompany('北京总公司');$root->add(new HRDepartment('总公司人力资源部'));$root->add(new FinaceDepartment('总公司财务部'));$comp1=new ConcreteCompany('上海华东分公司');$comp1->add(new HRDepartment('华东分公司人力资源部'));$comp1->add(new FinaceDepartment('华东分公司财务部'));$root->add($comp1);$comp2=new ConcreteCompany('南京办事处');$comp2->add(new HRDepartment('南京办事处人力资源部'));$comp2->add(new FinaceDepartment('南京办事处财务部'));$comp1->add($comp2);$comp3=new ConcreteCompany('杭州办事处');$comp3->add(new HRDepartment('杭州办事处人力资源部'));$comp3->add(new FinaceDepartment('杭州办事处财务部'));$comp1->add($comp3);$root->display(1);$root->lineofduty();
转载于:https://blog.51cto.com/noican/1614777