全国站 [切换城市]
众众网全国页 如何由浅入深理解学习PHP的重要点Facade

如何由浅入深理解学习PHP的重要点Facade

来源:网友投稿 时间:2020-03-20

作为国人最喜爱的PHP主流的TP框架,其内部也是用到很多的优秀的设计思想,Facade门面模式就是其中之一,我们为什么要理解Facade原理?下面跟着小编一起了解一下吧。

  作为国人*喜爱的PHP主流的TP框架,其内部也是用到很多的优秀的设计思想,Facade门面模式就是其中之一,通过门面的静态代理访问操作类进而实现功能。
  Facade模式为子系统中的各类提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。Facade并不是laravel框架独有的东西,它属于设计模式中的外观模式。
  我们为什么要理解Facade原理?
  1.为了降低复杂性,常常将系统划分为若干个子系统。但是如何做到各个系统之间的通信和相互依赖关系达到最小呢?这时候就需要facade模式了。为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。
  2.如果我们不使用facade模式,想把服务容器里的对象取出来,并调用他的方法,就需要obj->method(arg1,arg2)->func(arg3,arg4);这种代码是可以接受的,但是还不够优雅,例如定义一个路由,也要这样复杂的的形似,就很不友好。facade为我们使用 Laravel 的功能提供了简单、易记的语法,而无需记住必须手动注入或配置的长长的类名。
  在遇到以下情况使用Facade模式:
  1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。
  2、客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
  3、当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点,如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。Laravel 自带了很多 Facades ,可以访问绝大部分 Laravel 的功能。不管是 Laravel 自带的 Facades,还是用户自定义的 Facades ,都继承自 Illuminate\Support\Facades\Facade 类。

免责声明:机构动态部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递 更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。