Head First 设计模式学习笔记(八)外观模式

外观模式:为子系统中的一组接口提供一个统一接口。外观模式定义了一个更高层的接口,使子系统更加容易使用。


外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。

举个例子
我们把一个文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第
一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。(两个抽屉还好说,但如果是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();
}
}

输出结果:
第一个抽屉被打开了
得到第二个抽屉的钥匙
第二个抽屉被打开了
得到这个重要文件

猜你喜欢

转载自chxiaowu.iteye.com/blog/1276447