/*
*
*老师1 老师2 2个工厂模式
*培训成绩记入工作业绩,使用观察者模式
*
*/
<?php
interface teach{
function teachStudent();
}
class teacher1 implements teach{
public $course;
public $score;
public $studentName;
public $studentDepartment;
public function __construct($studentName,$studentDepartment,$score){
$this->course='course1';
$this->studentName=$studentName;
$this->studentDepartment=$studentDepartment;
$this->score=$score;
}
public function teachStudent(){
return $this->score;
}
}
class teacher2 implements teach{
public $course;
public $score;
public $studentName;
public $studentDepartment;
public function __construct($studentName,$studentDepartment,$score){
$this->course='course2';
$this->studentName=$studentName;
$this->studentDepartment=$studentDepartment;
$this->score=$score;
}
public function teachStudent(){
return $this->score;
}
}
class studentFactory1{
private $_observers = array();
public function addStudent( $studentName, $studentDepartment, $score, $course1)
{
foreach( $this->_observers as $obs )
$obs->addLog($this, $studentName, $studentDepartment, $score, $course1);
}
public function addObserver( $observer )
{
$this->_observers []= $observer;
}
public static function Creat($studentName,$studentDepartment){
$teacher = new teacher1($studentName,$studentDepartment);
$score = $teacher->teachStudent();
$course='course1';
$this->addObserver(new Observer());
$this->addStudent($studentName, $studentDepartment, $score, $course1);
}
}
class studentFactory2{
private $_observers = array();
public function addStudent( $studentName, $studentDepartment, $score, $course2)
{
foreach( $this->_observers as $obs )
$obs->addLog($this, $studentName, $studentDepartment, $score, $course2);
}
public function addObserver( $observer )
{
$this->_observers []= $observer;
}
public static function Creat($studentName,$studentDepartment){
$teacher = new teacher2($studentName,$studentDepartment);
$score = $teacher->teachStudent();
$course='course2';
$this->addObserver(new Observer());
$this->addStudent($studentName, $studentDepartment, $score, $course2);
}
}
class obServer(){
public function addLog($sender, $studentName, $studentDepartment, $score, $course)
{
echo( "'$studentDepartment.$studentName.$course.$score' added to Log/n" );
}
}
$creatLog = studentFactory1::Creat('柯云','PCTP','100');
?>