首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Facade外观形式

2012-06-27 
Facade外观模式Fa?ade模式的几个要点:1、从客户程序的角度看,Facade模式不仅简化了整个组件系统的接口,同时

Facade外观模式

Fa?ade模式的几个要点:
1、从客户程序的角度看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Facade接口的变化。
2、Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式

举个例子
我们把一个文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。(两个抽屉还好说,但如果是n个呢?)所以对于客户来说,这些取钥匙的过程不需要知道,他们只需要按一个按钮,然后文件就自动取出来。代码例子如下:

public class DrawerOne {
public void open() {
?? System.out.println("第一个抽屉被打开了");
?? getKey();
}

public void getKey() {
?? System.out.println("得到第二个抽屉的钥匙");
}
}

public class DrawerTwo {
public void open() {
?? System.out.println("第二个抽屉被打开了");
?? getFile();
}

public void getFile() {
?? System.out.println("得到这个重要文件");
}
}

//这就是外观类,对客户隐藏了所有具体细节
//client类只需要调用一个open()就完成所有操作
public class DrawerFacade {
DrawerOne darwerOne = new DrawerOne();
DrawerTwo darwerTwo = new DrawerTwo();

public void open() {
?? darwerOne.open();
?? darwerTwo.open();
}
}

public class Client {
public static void main(String[] args) {
?? DrawerFacade drawer = new DrawerFacade();
?? drawer.open();
}
}

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

热点排行