前一篇文章介绍了接口型模式里的适配器模式,现在我们来看一下第二个接口型模式:外观模式。
意图:为子系统提供一个简单的接口(外观类),隐藏它的复杂性以便于使用
外观类可能全是静态方法,在UML中,这样的类被称为工具类(Utility)。
class InnerClassA {
public void doSomeThing(){
// processing logic
}
}
class InnerClassB {
public void doSomeThing(){
// processing logic
}
}
class InnerClassC{
public void doSomeThing(){
// processing logic
}
}
class FacadeClass{
public static void doSomeThing(){
new InnerClassA().doSomeThing();
new InnerClassB().doSomeThing();
new InnerClassC().doSomeThing();
}
}</span>
上述代码是外观模式的简单实例,正如在意图中所述,外观模式主要是为客户提供一系列简单易用的接口,而将内部的复杂性屏蔽。
扩展问题:为什么Java类库中很少有外观类?
1. 作为Java开发者,通常需要熟悉Java基础类库,而建立外观类则有可能妨碍程序员理解基础类库,甚至有可能因为外观类分散程序员的注意力而导致对类库提供功能的误解
2. 外观类一般是丰富的开发包提供的,而且他对使用者有一定的了解;但Java基础类库的使用者太广泛,所以很难创建优秀的外观类