《设计模式解析》读书笔记之Facade Pattern(外观模式)
一、Facade Pattern 模式简介
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,是子系统更加容易使用。
二、Facade Pattern关键特征
名称 | 说明 |
---|---|
意图 | 希望简化原有系统的使用方式。需要定义自己的接口。 |
问题 | 只需要使用哦某个复杂系统的子集,或者,需要以一种特殊的方式使与系统交互 |
解决方案 | Facade为原有系统的客户提供了一个新的接口 |
参与者与协作者 | 接口本身和各个子系统。为用户提供一个简化接口,是系统更容易使用 |
效果 | Facade模式简化了对所需子系统的使用过程。但是,由于Facade并不完整,因此客户可能无法使用某些功能 |
实现 | 定义一个(或多个)具备所需接口的新类 让新的类使用原有的系统 |
三、代码
代码参考自《大话设计模式》
3.1子系统
package com.qwm.facade;
/**
* 子系统----------------------
*/
class SubSystemOne{
public void methOne(){
System.out.println("子系统方法一");
}
}
class SubSystemTwo{
public void methTwo(){
System.out.println("子系统方法二");
}
}
class SubSystemThree{
public void methThree(){
System.out.println("子系统方法三");
}
}
class SubSystemFour{
public void methFour(){
System.out.println("子系统方法四");
}
}
3.2Facade(外观类)
package com.qwm.facade;
/**
* Created by qiwenming on 16/6/23.
* Facade类(外观类)
*/
public class Facade {
private SubSystemOne subOne;
private SubSystemTwo subTwo;;
private SubSystemThree subThree;
private SubSystemFour subFour;
public Facade() {
subOne = new SubSystemOne();
subTwo = new SubSystemTwo();
subThree = new SubSystemThree();
subFour = new SubSystemFour();
}
public void methodA(){
System.out.println("------方法组A--------");
subOne.methOne();
subFour.methFour();
subThree.methThree();
}
public void methodB(){
System.out.println("------方法组B--------");
subOne.methOne();
subTwo.methTwo();
}
}
3.3客户端
package com.qwm.facade;
/**
* Created by qiwenming on 16/6/23.
* 客户端
*/
public class Client {
public static void main(String[] args){
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}
`
3.4结果
------方法组A--------
子系统方法一
子系统方法四
子系统方法三
------方法组B--------
子系统方法一
子系统方法二
四、源码下载
https://github.com/qiwenming/designpattern/tree/master/src/com/qwm/facade