一、模式定义
外观模式:外观模式就是提供一个统一的接口,用来访问子系统的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。,外观模式也称门面模式,是一种对象结构型设计模式。
二、模式角色
从模式定义可以知道,外观模式应该包含如下角色:
- Frcade:外观角色
- SubSystem:子系统角色
- Client:客户端角色
经典例子:
public class Facade
{
private SubSystemA obj1 = new SubSystemA();
private SubSystemB obj2 = new SubSystemB();
private SubSystemC obj3 = new SubSystemC();
public void method()
{
obj1.method();
obj2.method();
obj3.method();
}
}
三、模式简单分析
四、简单例子实践
import java.sql.*;
public class JDBCFacade {
private Connection conn=null;
private Statement statement=null;
public void open(String driver,String jdbcUrl,String userName,String userPwd) {
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(jdbcUrl,userName,userPwd);
statement = conn.createStatement();
}
catch (Exception e) {
e.printStackTrace();
}
}
public int executeUpdate(String sql) {
try {
return statement.executeUpdate(sql);
}
catch (SQLException e) {
e.printStackTrace();
return -1;
}
}
public ResultSet executeQuery(String sql) {
try {
return statement.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public void close() {
try {
conn.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
五、模式应用
外观模式适用于复杂的系统,可以用于系统解耦。下面简单列举一下外观模式的一些应用场景
JavaEE框架里的Session就是用了外观模式
学JSP的JDBC数据库操作也是经常用外观模式的