设计模式练习

45 篇文章 0 订阅

/*
 *
 *老师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');
?> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值