1、简介
外观模式(Facaed Pattern),隐藏系统的复杂性,并向客户端提供一个可访问的接口。
核心代码:在客户端和复杂系统之间加上一层,在这一层将调用顺序、依赖关系处理好。
优点:
- 减少了系统相互依赖
- 提高了系统灵活性
- 提高了安全性
缺点:
不符合开闭原则,改东西很麻烦,继承重写都不合适。
一个现实生活中的例子就是,病人去医院看病,可能需要挂号、抓药、输液等环节,这时如果有一个接待员,来处理这些事情,就很方便了。
2、使用
// 形状接口
public interface Shape {
void draw();
}
// 形状实现
public class Circlo implements Shape{
@Override
public void draw() {
System.out.println("Shape Circlo drawing");
}
}
public class Sequre implements Shape{
@Override
public void draw() {
System.out.println("Shape Square drawing");
}
}
// 外观类
public class ShapeMarket {
private Shape criclo;
private Shape square;
public ShapeMarket() {
this.criclo = new Circlo();
this.square = new Sequre();
}
public void drawCriclo() {
criclo.draw();
}
public void drawSequare() {
square.draw();
}
}
// Test
ShapeMarket shapeMarket = new ShapeMarket();
shapeMarket.drawCriclo();
shapeMarket.drawSequare();