我要监视你,
小王是个小白司机 在高速上开车 ,超速出了车祸,这时,交警来了,车管所也来慰问了,保险公司开始理赔。。。
司机小白driver
<?php
/**
* Created by PhpStorm.
* 司机小白类
*/
namespace App\Http\Controllers;
//被观察者 Observed
class DriversObservedController extends Controller
{
//观察者数组
protected $obServer = [];
public function addObserver($obServer){
$this->obServer[] = $obServer;
}
//添加观察者
public function speeding(){
foreach ($this->obServer as $police){
$police->billing();
}
}
//删除观察者
public function delObserver($obServer){
$key = array_search($obServer,$this->obServer);
array_splice($this->obServer,$key);
}
}
交警
namespace App\Http\Controllers;
//交警观察者
class PoliceObserverController extends Controller
{
public function billing(){
echo '小伙子,跑那么快,想上天呀,来200元罚款,扣12分<br/>';
}
}
车管所
namespace App\Http\Controllers;
//车管所
class OfficObserverController extends Controller
{
public function billing(){
echo '来来来,重修科一<br/>';
}
}
保险公司
namespace App\Http\Controllers;
//保险公司
class InsuranceObserverController extends Controller
{
public function billing(){
echo '什么,什么??你这不在理赔范围哦哦<br/>';
}
}
。。。。
调用
public function index(){
$drivere = new DriversObservedController();
$police = new PoliceObserverController();
$offic = new OfficObserverController();
$ins = new InsuranceObserverController();
$drivere->addObserver($police);
$drivere->addObserver($offic);
$drivere->addObserver($ins);
$drivere->speeding();
}
结果
也可以删除观察者
$drivere->delObserver($ins);