2.10. 门面模式(Facade)
uml
目的 (其二)
- 避免让你阅读复杂的 API 文档
- 降低耦合性
其实就是把多个类方法合起来成而已 = 调用一个方法 = 调用多个类方法。
代码实现
<?php
interface JobInterface{
public function push();
public function dispatch();
}
class DatabaseJob implements JobInterface
{
public function push(){ }
public function dispatch(){ echo "database".PHP_EOL; }
}
class RedisJob implements JobInterface
{
public function push(){ }
public function dispatch(){ echo "redis".PHP_EOL; }
}
class JobFacade{
protected $database,$redis;
public function __construct()
{
$this->database = new DatabaseJob();
$this->redis = new RedisJob();
}
public function execDatabaseJob()
{
$this->database->push();
$this->database->dispatch();
}
public function execRedisJob()
{
$this->redis->push();
$this->redis->dispatch();
echo "redis";
}
}
$jobFacade = new JobFacade();
$jobFacade->execDatabaseJob();
$jobFacade->execRedisJob();
相比lar门面
完全不一样好吧?
lar的全是访问 服务容器的实例