外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。
例子:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计。
模式优缺点
优点
1、引入外观模式,是客户对子系统的使用变得简单了,减少了与子系统的关联对象,实现了子系统与客户之间的松耦合关系。
2、只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类
3、降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程
缺点
1、不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性
2、在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”
laravel5就实现了facade模式
看到这里,你应该明白Facade到底是怎么回事了吧?那么使用Facade有什么好处呢?在Laravel里,Facade其实是和IOC联合发挥威力的,我们这里单独讨论Facade。
以我目前粗浅的理解,能感受到的好处有:
1.语句更简短。不需要非得new一个对象出来再执行。
2.解除调用对象的强依赖关系。当我们执行Cache::set()的方法时,并不需要关心具体是哪个后端的类真正做了set这个操作。
如果将来想把缓存从文件改到redis里,只需要在配置文件里修改一下,业务代码完全不受影响。
laravel5中调用facade可以用别名;
'Restable' => 'AppLibraryFacadesRestable',
//use AppLibraryFacadesRestable;
use Restable;