一、什么是外观模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。
二、外观模式的结构
三、外观模式的角色和职责
Facade 为调用方定义简单的调用接口。
Clients 调用者。通过Facade接口调用提供某功能的内部类群。
Packages 功能提供者。指提供功能的类群(模块或子系统)
代码实现:
Packages:
package com.qianyan.facade;
public class GuoZhai {
public void mai() {
System.out.println("买国债");
}
}
package com.qianyan.facade;
public class GuPiao {
public void mai() {
System.out.println("买股票");
}
}
package com.qianyan.facade;
public class QiHuo {
public void mai() {
System.out.println("买期货");
}
}
Facade:
package com.qianyan.facade;
public class JiJin {
private GuoZhai guoZhai;
private QiHuo qiHuo;
private GuPiao guPiao;
public JiJin() {
guoZhai = new GuoZhai();
qiHuo = new QiHuo();
guPiao = new GuPiao();
}
//A
public void maiJiJinA() {
guoZhai.mai();
qiHuo.mai();
guPiao.mai();
}
//B
public void maiJiJinB() {
guoZhai.mai();
qiHuo.mai();
}
//C
public void maiJiJinC() {
qiHuo.mai();
guPiao.mai();
}
//D
public void maiJiJinD() {
qiHuo.mai();
guPiao.mai();
}
}
Clients:
package com.qianyan.facade;
public class MainClass {
public static void main(String[] args) {
JiJin jiJin = new JiJin();
jiJin.maiJiJinA();
System.out.println("------");
jiJin.maiJiJinB();
System.out.println("------");
jiJin.maiJiJinC();
System.out.println("------");
jiJin.maiJiJinD();
}
}
结果:
买国债
买期货
买股票
------
买国债
买期货
------
买期货
买股票
------
买期货
买股票