外观模式(Facade)
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。降低访问复杂系统的内部子系统时的复杂度。
在客户端和复杂系统之间再加一层,将调用顺序、依赖关系等处理好。
举个例子:我们经常用的电脑,开机其实是个非常复杂的过程,而我们只需要按开机按钮就可以了。
外观模式优点:
1.减少系统相互依赖。
2.提高灵活性。
2.提高了安全性。
适用场景:
1.为复杂的模块或子系统提供外界访问的模块。
2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade 将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
class Frame {
public void create() {
System.out.println("组装骨架");
}
}
class Engine {
public void create() {
System.out.println("组装引擎");
}
}
class Wheel {
public void create() {
System.out.println("组装轮子");
}
}
class Controller {
private Frame frame;
private Engine engine;
private Wheel wheel;
public Controller(){
frame = new Frame();
engine = new Engine();
wheel = new Wheel();
}
public void build(){
//汽车组装过程
frame.create();
engine.create();
wheel.create();
System.out.println("汽车组装完成");
}
}
public class Main {
public static void main(String[] args) {
Controller controller = new Controller();
//操作员按生产按钮开始组装汽车
controller.build();
}
}