一:什么是外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供一个可以访问系统的接口。
这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
二:进一步了解外观模式
目的:
为功能接口提供一个高层接口,这个高层接口使得这些功能接口更加容易使用。
主要解决:
降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。
什么时候使用:
1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
2、定义系统的入口。
关键代码:
在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。
优点:
1、减少系统相互依赖。
2、提高灵活性。
3、提高了安全性。
缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
三:实现
定义一个等级接口,它有三个实现类,再定义一个统一管理这三个实现类的外观类,类中方法调用实现类方法
等级接口
public interface Grade {
void toLevel();
}
等级一
//等级一
public class LevelOne implements Grade {
@Override
public void toLevel() {
System.out.println("等级一");
}
}
等级二
//等级二
public class LevelTwo implements Grade {
@Override
public void toLevel() {
System.out.println("等级二");
}
}
等级三
//等级三
public class LevelThree implements Grade {
@Override
public void toLevel() {
System.out.println("等级三");
}
}
外观类,包含所有等级
//外观类,包含所有等级
public class AllLevel {
private LevelOne levelOne;
private LevelTwo levelTwo;
private LevelThree levelThree;
public AllLevel() {
this.levelOne = new LevelOne();
this.levelTwo = new LevelTwo();
this.levelThree = new LevelThree();
}
public void one(){
levelOne.toLevel();
}
public void two(){
levelTwo.toLevel();
}
public void three(){
levelThree.toLevel();
}
}
测试类
//测试类
public class Test {
public static void main(String[] args) {
AllLevel allLevel = new AllLevel();
allLevel.one();
allLevel.two();
allLevel.three();
}
}
测试结果: