## **模式的定義**
是一種通過為多個復雜的子系統提供一個一致的接口,而使這些子系統更加容易被訪問的模式。該模式對外有一個統一接口,外部應用程序不用關心內部子系統的具體的細節,這樣會大大降低應用程序的復雜度,提高了程序的可維護性。說白了就是把多個接口封裝到一起,統一對外暴露接口。
## **代碼實現**
需求:新用戶注冊完成后需要發送短信通知,發送新人優惠券,發送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();
}
```
相對還是比較好理解的.