设计模式3大特点:设计模式之外观模式
设计模式3大特点:设计模式之外观模式封装内部交互,让外部简化调用外观层的目的:外观模式为了让外部模块减少对内部子模块的交互,松散耦合,使外部更简单的使用功能。图2图2的抽象层即为外观层外观层定义:定义多个子模块的对外高层接口,统一对外提供聚合服务
场景案例我们在做软件开发的时候会遇到这样的场景,模块A需要调用模块B、模块C、模块D去完成某项功能,那么对于模块A而言需要知道模块BCD分别是做什么的,然后才能调用各自的模块完成自己的功能,而且如果有其他模块也需要调用BCD模块完成功能的话,相对来说这么调用非常的繁琐。如图
图1
上述案例的问题点- 调用复杂,需要了解各个模块的功能
- 无法形成通用聚合功能
- 如果被调用的模块发生了变化客户端也需要做相应的改变,耦合较大
首先想到的是我们能不能抽象一个层出来,然后定义出一个接口,接口的实现分别调用模块BCD呢?这样的话,其他模块如果要实现同样功能的时候,直接调用这个层是不是就可以了呢?
如图2
图2
图2的抽象层即为外观层
目的外观层定义:定义多个子模块的对外高层接口,统一对外提供聚合服务
外观层的目的:外观模式为了让外部模块减少对内部子模块的交互,松散耦合,使外部更简单的使用功能。
优缺点- 优点
- 简单易用
- 增加复用性
- 软件层次分明
- 松耦合
- 缺点
- 需要合理的归纳总结,对于初级开发者或者业务不是很了解的者稍微有些难
- 增加层次
封装内部交互,让外部简化调用
代码不使用外观模式
public void testA(){
testB();
testC();
testD();
}
public void testF(){
testB();
testC();
testD();
}
使用外观模式
void testA(){
testB();
testC();
testD();
}
void testFacede(){
testB();
testC();
testD();
}