作用:將兩個不相關的類結合在一起,通過兩個類中的方法和屬性,得到新的功能
// 講師分配
abstract class Students
{
abstract public function classroom();
}
class OpenStudents extends Students
{
public function classroom()
{
return '公開課教室1,公開課教室2,公開課教室3';
}
}
class VipStudents extends Students
{
public function classroom()
{
return 'VIP教室1,VIP教室2,VIP教室3';
}
}
// 學員上課
abstract class Listen
{
abstract public function project($who, $course);
}
class Course extends Listen
{
public function project($who, $course)
{
return $course . '這幾個教室正在上' . $who;
}
}
class StudentListen
{
public $classroom;
public $course;
public function __construct($classroom, $course)
{
$this->classroom = $classroom;
$this->course = $course;
}
public function privilege($who)
{
$roomName = $this->classroom->classroom();
return $this->course->project($roomName, $who);
}
}
$classroom = new OpenStudents(); // 公開課教室
$course = new Course();
$obj = new StudentListen($classroom, $course);
echo $obj->privilege('swoole');