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();
}
}

 

 

 

 

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值