23种设计模式--外观模式
结构型设计模式的一种
【DP】定义
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
使用场景
- 对旧系统复用时,如果接口很多很乱,可以使用外观模式对接口进行简化
- 系统演化过程中,出现很多很小的类,对外暴露的接口繁杂,此时可以使用外观模式
- 设计之初,对不同逻辑层的接口之间使用外观模式,如DAO层的接口很多,可以使用外观模式使接口更加清晰
类图
Facade归纳总结子系统中的方法,使用更简洁的方法提供给客户端调用。
举例
报表有两个接口,分别用于获取格式态报表和查询数据,如下:1
2
3
4
5
6
7public interface IFormatReport {
FormatModel getFormatModel();
}
public interface IQueryReport {
ReportModel queryReport(FormatModel format);
}
但是在客户端调用时只需要最终的查询结果就可以了,因此可以使用外观模式简化接口如下:1
2
3
4
5
6
7
8public class Facade {
public ReportModel queryReport() {
IFormatReport formatReportSrv = new 实例类();
IQueryReport queryReportSrv = new 实例类();
FormatReport format = formatReportSrv.getFormatModel;
return queryReportSrv.queryReport(format);
}
}
这样客户端只需要知道Facade.queryReport就可以了。
注意事项
盲目使用会增加类的个数,导致维护困难。