【设计模式学习笔记】门面模式
门面模式
-
定义
提供一个高层的接口,这个接口里包括一组接口,给用户调用。这组被包裹的接口是所有接口的一个子集。可以避免用户多次调用不同接口,同时又避免了调用所有的接口。比如,系统A有a、b、c、d四个接口,系统B只需要a、b、d三个接口。可以将a、b、d三个接口包裹成一个门面接口给系统B使用。 -
应用场景
-
解决易用性问题
比如Linux的系统调用函数以及Linux的Shell命令,都是封装了底层的代码。 -
解决性能问题
比如涉及网络通信的多个接口,可以用门面接口包成一个接口,减少通信成本。
如何组织门面接口和非门面接口?
(1)如果门面接口不多,则和非门面接口放在一起使用;
(2)如果门面接口很多,则提取出来,放到一个新的类或包里,通过类/包名进行区分;
(3)如果门面接口特别多,并且跨越多个子系统,则将门面接口抽出来放到一个新的子系统里。 -
解决分布式事务问题
比如两个不同的接口/类需要一起执行,成功则都成功,失败则都失败。可以用一个门面接口把这两个接口/类包在一起,放在一个session内完成。