一、什么是外观模式
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();
}
}
结果:
买国债
买期货
买股票
------
买国债
买期货
------
买期货
买股票
------
买期货
买股票
本文介绍了外观模式的概念、结构及其实现方式。通过一个具体的例子展示了如何使用外观模式简化复杂的子系统接口,提高系统的可维护性和可扩展性。
2012

被折叠的 条评论
为什么被折叠?



