外观模式:为子系统中的一组接口提供一个统一接口。外观模式定义了一个更高层的接口,使子系统更加容易使用。
外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。
举个例子
我们把一个文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。(两个抽屉还好说,但如果是n个呢?)所以对于客户来说,这些取钥匙的过程不需要知道,他们只需要按一个按钮,然后文件就自动取出来。代码例子如下:
1、
public class DrawerOne {
public void open() {
System.out.println("第一个抽屉被打开了");
getKey();
}
public void getKey() {
System.out.println("得到第二个抽屉的钥匙");
}
}
2、
public class DrawerTwo {
public void open() {
System.out.println("第二个抽屉被打开了");
getFile();
}
public void getFile() {
System.out.println("得到这个重要文件");
}
}
3、
//这就是外观类,对客户隐藏了所有具体细节
//client类只需要调用一个open()就完成所有操作
public class DrawerFacade {
DrawerOne darwerOne = new DrawerOne();
DrawerTwo darwerTwo = new DrawerTwo();
public void open() {
darwerOne.open();
darwerTwo.open();
}
}
4、
public class Client {
public static void main(String[] args) {
DrawerFacade drawer = new DrawerFacade();
drawer.open();
}
}
输出结果:
第一个抽屉被打开了
得到第二个抽屉的钥匙
第二个抽屉被打开了
得到这个重要文件
本文介绍了一种结构型设计模式——外观模式,该模式通过提供一个统一的接口来简化复杂子系统的使用。通过一个文件存取的例子展示了如何利用外观模式减少客户端与多个子系统之间的耦合。
外观模式&spm=1001.2101.3001.5002&articleId=84088166&d=1&t=3&u=f14408cc659149a8b12fe87908f9b85c)
691

被折叠的 条评论
为什么被折叠?



