《设计模式》中对Facade模式是这样叙述的:
为子系统的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使得子系统更加容易使用。
Facade模式的关键特征:
意图:希望简化原有系统的使用方式,需要定义自己的接口。
问题:只需要使用某个复杂系统的子集,或则,需要一种一种特殊的方式与系统交互。
解决方案:为原有系统的客户提供了一个统一的高层的接口。
参与者与协作者:接口本身和各个子系统。
效果:简化了对子系统的使用过程。
实现:定义一个具备所需接口的新类。让新的类使用原有的系统。
下图展示了Facade模式的作用。
这就是Facade模式。通过这个模式我们能够更加容易地使用一个复杂的系统。另外,Facade模式不仅可以创建更加简单的接口,还能够用来减少客户端用户必须处理的对象数量,或者用来隐藏封装系统。
下面以代码为例。其功能只是冲文件中获取log信息并把它转换为对象数据:
function getProductFileLines($file){
return file($file);
}
function getProductObjectFromId($id,$productName){
return new Product($id,$productName);
}
function getNam