最近在很多场合都看见设计模式的影子,一直以来,都投入主要时间在搞算法与数据结构,很来发现设计模式真的很重要。有的时候代码的可维护、可重用、可扩展确实胜过单纯的算法效率高。所以拾起大牛书籍《大话设计模式》同时参考网上诸大牛的博客,开始我的设计模式之旅。
今天先介绍一下外观模式。
概念:
外观模式(Facade):为多个子系统的一组接口提供一个统一的界面,此模式定义了一个的高级接口,从而简化用户对子系统的使用操作。
具体组成:
(1)、子系统类:实现不同子系统的底层功能。
(2)、外观类:组合封装用户经常使用的不同子系统的方法,形成高层接口。需要声明子系统的引用。
优点:
子系统往往因为不断重构而变得复杂,可以尝试给他们增加统一接口外观类,来简化对其的组合操作。
贴段代码:
package Pattern;
/*
* 子系统类1
*/
class SubSystemOne {
public void ShowSubSystemOne() {
System.out.println("子系统一启动!");
}
}
/*
* 子系统类2
*/
class SubSystemTwo {
public void DoSubSystemTwo() {
System.out.println("子系统在运行!");
}
}
/*
* 子系统类3
*/
class SubSystemThree {
public void SleepSubSystemThree() {
System.out.println("子系统在休眠!");
}
}
/*
* 外观类
*/
class Facade {
SubSystemOne mySubSystemOne;
SubSystemTwo mySubSystemTwo;
SubSystemThree mySubSystemThree;
public Facade() {
mySubSystemOne = new SubSystemOne();
mySubSystemTwo = new SubSystemTwo();
mySubSystemThree = new SubSystemThree();
}
public void MethodA() {
mySubSystemOne.ShowSubSystemOne();
mySubSystemTwo.DoSubSystemTwo();
}
public void MethodB() {
mySubSystemOne.ShowSubSystemOne();
mySubSystemThree.SleepSubSystemThree();
}
}
public class Pattern {
public static void main(String[] args) {
try {
Facade myFacade = new Facade();
myFacade.MethodA();
myFacade.MethodB();
} catch (Exception e) {
System.out.println("Java异常发生!");
}
}
}