Probleme mit der „Fassade“ und dem „Vertrag“ von Laravel:
Es gibt zwei Fragen:
1 Was sind die Verwendungsszenarien dieser beiden Dinge?
2. Ich kann nicht verstehen, warum diese beiden Wörter verwendet werden. Ich habe das Gefühl, dass sie etwas mit ihren Funktionen zu tun haben.
简单的说:
外观
(你说的门面
)是外观模式
的实现。协议
(你说的契约
)是工厂方法模式
或抽象工厂模式
的实现。阅读一下设计模式,你能收货不少。
你要先学会用依赖注入容器。
Laravel的Facade就是从容器里调用服务的快捷方式。
没有Facade的时候,你可能要这样拿到一个服务/对象,然后调用:
因为你在容器里注册了
'some_service'
,所以容器能make
一个实例给你。Facade只是用静态方式简化了这个使用过程,底层用
__callStatic
把函数和参数传给服务实例:Contract就是一堆框架自带的接口,可以通过依赖注入得到具体实现。
Facade和Contract只是依赖注入容器的不同使用方式,用Facade就是自己去容器取(把容器当Service Locator用),用Contract就是等容器注入依赖。
门面,往简单了说,就是给服务容器中绑定的服务起了个别名,利用class_alias函数
比如App对应Container类。
契约,顾名思义,就是一种规定,双方都认可并且遵守的东西,而“接口”也是具备这些特性,楼主问的,应该“面向接口编程”,面向接口编程,比较难说明白,本人资历尚浅,需楼主自己多实践,多体会,见谅…