[PHP设计模式]十四、实战——观察者模式在MVC模式中的使用

模拟一个场景,一个新员工入职,不同部门需要有不同的工作需要处理。

控制器层:

class Index extends Controller
{
	// 传统模式:
	public function index()
	{
		$model = Factory::getModel('user');
		$model->create(['name' => 'zhangsan', 'sex' => '男']);
		// case1 : 行政:分配工位
		// case2 : HR:注册社保
		// case3 : IT:分配电脑
	}
}

模型层:

class User extends Model
{
	public function create($user)
	{
		$userId = 1;
		$this->notify($user);
		return $userId;
	}
}

配置层:

return [
	'user' => [
		// 三个观察者,分别对应不同部门的职责
		'observer' => [
			'App\observer\UserAdd1',
			'App\observer\UserAdd2',
			'App\observer\UserAdd3',
		],
	],
];

观察者:
App\observer\UserAdd、App\observer\UserAdd2、App\observer\UserAdd3

<?php
namespace App\observer;

class UserAdd1()
{
	function update($id)
	{
		echo "分配工位<br/>";
	}
}

<?php
namespace App\observer;

class UserAdd2()
{
	function update($id)
	{
		echo "注册社保<br/>";
	}
}

<?php
namespace App\observer;

class UserAdd3()
{
	function update($id)
	{
		echo "分配电脑<br/>";
	}
}

如果需要新的部门,实现新的部门职能,只需要再新增一个观察者。如果某个部门的职能不需要了,只需要注释掉配置中的对应的观察者就可以了。

上一页 下一页

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页