09-门面模式
01.门面模式
public class UserController {
public void a() {
System.out.println("== a ==");
}
public void b() {
System.out.println("== b ==");
}
}
/**
* 门面模式:完成一个功能需要调用UserController中的a()和b(),需要两次接口调用。
* 通过门面模式将a()和b()封装到UserFacade中的x()中,只需要一次调用即可完成功能。
*/
public class UserFacade {
private UserController userController;
public UserFacade(UserController userController) {
this.userController = userController;
}
public void x() {
userController.a();
userController.b();
}
}
2.门面模式总结
- <<设计模式:可复用面向对象软件的基础>>中对门面模式的定义:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更已用。
- 门面模式通俗的解释:A系统提供四个接口a、b、c、d。系统B完成某个业务功能,需要调用系统A的三个接口a、b、c,利用门面模式可以提供一个包裹a、b、d的门面接口x,供系统B直接使用。原本系统B需要和系统A通讯三次才能实现业务功能,添加门面接口x后,只需要一次系统B就可以完成业务功能。
- 门面模式的作用。
- 门面模式可以提高接口的易用性。门面模式通过提供一组易用的接口,封装系统底层的负责实现。如Linux操作系统的Shell命令,就可以看做是一种门面,它封装操作系统调用函数,让用户可以通过执行的简单的命令来完成和操作系统的交互。
- 利用门面模式提高接口的性能。某个功能需要调用多个接口完成,可以将多个接口替换为一个门面接口,来减少网络通信成本。