设计模式之外观模式–抽象出高层接口更加易用
外观模式
是套个壳子,隐藏细节。
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使子系统更加易用。
为什么要使用外观模式
外观模式是对底层的抽象,隐藏你不该知道的东西,暴露你应该知道的东西,更加符合迪米特法则
,接口隔离原则
。
外观模式的本质同样是套壳子,比如你有一个缓存系统。
这个缓存系统存入数据需要
- 加锁
- 存数据
- 释放锁
我们的客户端实现
//加锁
$lock = new lock;
$lock->lock();
//存入数据
$redis = new redis;
$redis->set();
//释放锁
$lock->unlock();
这只是比较简单的几步,有的可能会更加复杂,你需要调用多个接口。
这样的话可以使用外观模式封装一下这些细节。
/**
* 外观模式
* 外观的封装,对底层模块的封装
*/
class Facade {
/**
* 对存入缓存进行封装
*/
public function set() {
//加锁
$lock = new lock;
$lock->lock();
//存入数据
$redis = new redis;
$redis->set();
//释放锁
$lock->unlock();
}
}
使用外观的客户端
$facade = new Facade;
$facade->set();
其实外观就是封装的思想体现。
代码放在了我的github上面。