## **模式的定义**
是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。说白了就是把多个接口封装到一起,统一对外暴露接口。
## **代码实现**
需求:新用户注册完成后需要发送短信通知,发送新人优惠券,发送app消息通知。
1. 定义各个功能的接口以及实现方法
```
public interface SmsService {
void send();
}
public class SmsServiceImpl implements SmsService {
@Override
public void send() {
System.out.println("发送短信通知");
}
}
public interface ConponService {
void send();
}
public class ConponServiceImpl implements ConponService {
@Override
public void send() {
System.out.println("发送新人优惠券");
}
}
```
2. 创建统一的门面
```
public class RegisterFacade {
private SmsService smsService;
private ConponService conponService;
public RegisterFacade() {
smsService = new SmsServiceImpl();
conponService = new ConponServiceImpl();
}
public void execute(){
smsService.send();
conponService.send();
}
}
```
3. 客户端调用
```
public static void main(String[] args) {
// 注册
...
// 注册完成后
RegisterFacade facade = new RegisterFacade();
facade.execute();
}
```
相对还是比较好理解的.