Fa?ade模式在编程中我们会不知不觉地使用,外观模式(Facade Pattern)可以将一系列复杂的类包装成一个简单的封闭接口,也称为门面模式。应用场景举例:
1、把经常出现的重复性代码用对象加以封装,以减少代码冗余。如在Jdbc编程中,可能会经常出现如下代码片断:
Class.forName("driverPath");
Connection conn = DriverManager.getConnection(URL, user, password);
这样每次要从数据库获得数据或写数据到数据库中,要重复地使用以上代码,这样造成代码不断重复,如果数据库用户名或密码改变,那么在很多类文件中得不断修改相关对代码,以上代码是很糟糕的代码。为了增加复用。可以把此封装一个对象。如这样调用MyConn.getConn。这就是Facade模式,这种模式的作用就是客户端最终得到某种功能的代码给客户端调用,相关的过程代码可以建立一个对象进行封装。
2、封装已有的类,弥补已有类的不足。如java.util.stack这个类没有把Collection对象进行一次压入与一次性弹出的功能,可以为该类增长这两个功能。代码示例如下:
package com.wsysoft.lang;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class StackDemo<E> {
private Stack<E> stack = null;
public StackDemo() {
stack = new Stack<E>();
}
// 压一个List容器对象入栈
public void push(List<E> listObj) {
stack = new Stack<E>();
for (E e : listObj) {
stack.push(e);
}
}
// 弹出<code>popCount<code> 个元素出栈形成List数组。
public List<E> pop(int popCount) {
if (popCount > stack.size()) {
throw new IndexOutOfBoundsException();
} else if (popCount < 0) {
throw new IllegalArgumentException("Illegal popCount: " + popCount);
}
List<E> arrayList = new ArrayList<E>(popCount);
for (int i = 0; i < popCount; i++) {
arrayList.add(stack.pop());
}
return arrayList;
}
}
评论