一、什么是外观模式
在系统设计过程中,业务实现的复杂逻辑不希望被外界看到,因此为客户端提供了一个访问系统的入口,用于隐藏系统的复杂性。
应用场景:JAVA 的三层开发模式。
二、如何实现外观模式
以下为代码实现:
public class FacadeDemo {
public static void main(String[] args) {
FacadeMaker facadeMaker = new FacadeMaker();
facadeMaker.drawAnimal();
facadeMaker.drawSquare();
facadeMaker.drawStar();
}
}
/**
* 创建一个Shape实体类
*/
interface Shape{
void draw();
}
/**
* 画圆实体类
*/
class Square implements Shape{
@Override
public void draw() {
System.out.println("draw a square!");
}
}
/**
* 画一个动物实体类
*/
class Animal implements Shape {
@Override
public void draw() {
System.out.println("draw a animal");
}
}
/**
* 画一个五角星
*/
class Star implements Shape {
@Override
public void draw() {
System.out.println("draw a star!");
}
}
/**
* 创建一个外观类
*/
class FacadeMaker {
private Shape square;
private Shape star;
private Shape animal;
FacadeMaker(){
square = new Square();
star = new Star();
animal = new Animal();
}
public void drawSquare() {
square.draw();
}
public void drawStar() {
star.draw();
}
public void drawAnimal() {
animal.draw();
}
}
三、外观模式的优缺点
外观模式的优点:
- 降低耦合度,各类代码业务逻辑相互独立,有效降低了耦合度
- 提高灵活性,具体的业务逻辑实现在系统内部而不在访问接口,因此可以灵活修改
- 提高了安全性,业务实现逻辑被隐藏起来,外界无法直接看到。
外观模式的缺点:
- 不符合开闭原则,新增修改都需要重写内部业务逻辑