本文转载自微信公众号《程序员小航》,作者程序员小航。转载本文请联系程序员小航公众号。前言Facade模式,也称为外观模式,是一种结构设计模式,为库、框架或其他复杂的类提供简单的接口。1使用场景门面模式可以说是工作中用的比较多的一种设计模式,比如常用的slf4j。下面简单介绍下常用场景:设计远程接口的统一入口。比如需要调用微信支付宝支付。里面有很多参数,而且参数不一样。这时候可以统一封装一个接口,然后朋友们使用的时候,只需要调用封装好的接口即可。不用担心相同的状态,这里叫status,那里叫orderStatus。反正对外是一个统一的门面,可以自己定义。好处统一封装外观的好处是它们可以被模拟。这是我最近了解到的。之前都是一句话,谁在乎junit。mock的意思就是在junit测试中,使用@MockBean注入一个mock对象,然后自己定义返回。Mockito.when(xxxFacadeService.methodX()).thenReturn(mockBean);是在调用接口时返回模拟对象。这个是我刚刚发现的,因为我尝试用@MockBean注解Dubbo接口的对象,但是没有用。但是,仍然可以变通。所有调用外部接口的地方,不管是http还是dubbo,都封装了facade,这样我mock自己的facade接口就ok了。2小结在开发中,除了将很多对外接口封装为门面外,还将自己的接口封装为门面。还会有与策略模式结合使用,或与适配器模式结合使用。这些有很多很多的使用场景,但是如果你单独了解一个,以后遇到的时候可以自己扩展。相关资料[1]《深入设计模式》:https://refactoringguru.cn/design-patternss[2]封面图:https://refactoringguru.cn/design-patterns/facade