契约和门面的区别

路上有你,苦一点也愿意,苦很多就算了。

 

门面”和“契约”的核心区别在于它们解决问题的侧重点完全不同

  • 门面 (Facade) 解决的是“如何调用更方便”的问题。它提供了一个静态的、简洁的调用方式
  • 契约 (Contract) 解决的是“如何定义依赖更灵活”的问题。它提供了一组接口 (Interface),用于解耦代码

 

契约 (Contracts):制定“合同”

  契约是框架或应用定义的一组接口(Interface),规定了“实现这个接口的类必须提供哪些服务”

  核心作用:它的作用是解耦。你的代码依赖于“接口”(契约),而不是具体的“实现类”,这使得在不修改业务代码的情况下,可以轻松替换底层的具体实现,让代码更灵活、更易于测试

 

门面 (Facades):提供“快捷方式”

  核心作用:它的作用是简化。它让我们可以像调用静态方法一样(例如 Cache::get())来使用服务,省去了每次都要从容器中获取实例的繁琐步骤。

 

image

 

它们的关系:一枚硬币的两面

简单来说,门面是“如何调用”的问题,契约是“调用什么”的问题。一个典型的门面,就是为某个实现了契约的类,提供了一个静态的、便捷的调用入口。

 

很多时候,契约和门面一样的,有的人喜欢使用契约,有的人喜欢使用门面,但是其中还是有点区别的

契约:框架提供并定义了核心服务,关键就是接口二字;

门面:有门面一般一定会有对应的契约,就是静态代理,它将非静态的类可以作为静态类使用。注册之后,在任意地方进行使用;

 

posted @ 2022-09-23 09:00  方达达  阅读(45)  评论(0)    收藏  举报