第6章 Facade模式
来源:互联网 发布:1990人口普查分县数据 编辑:程序博客网 时间:2024/05/05 15:28
Facade:为子系统中的一组接口提供一个统一接口(界面)。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
Facade模式:关键特征
意图:希望简化原有系统的使用方式。需要定义自己的接口。
问题:只需要使用某个复杂系统的子集,或者,需要以一种特殊的方式与系统交互。
解决方案:Facade为原有系统的客户提供了一个新的接口。
参与者与协作者:为客户提供的一个简化的接口,使系统更容易使用。
效果:Facade模式简化了对所需子系统的使用过程。但是,由于Facade并不完整,因此客户可能无法使用某些功能。
实现:定义一个或多个具备所需接口的新类;让新的类使用原有的系统。
封装系统的原因:跟踪系统的使用情况;改换系统。
Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作:
public class DBCompare {
Connection conn = null;
PreparedStatement prep = null;
ResultSet rset = null;
try {
Class.forName( "<driver>" ).newInstance();
conn = DriverManager.getConnection( "<database>" );
String sql = "SELECT * FROM <table> WHERE <column name> = ?";
prep = conn.prepareStatement( sql );
prep.setString( 1, "<column value>" );
rset = prep.executeQuery();
if( rset.next() ) {
System.out.println( rset.getString( "<column name" ) );
}
} catch( SException e ) {
e.printStackTrace();
} finally {
rset.close();
prep.close();
conn.close();
}
}
上例是Jsp中最通常的对数据库操作办法.
在应用中,经常需要对数据库操作,每次都写上述一段代码肯定比较麻烦,需要将其中不变的部分提炼出来,做成一个接口,这就引入了facade外观对象.如果以后我们更换Class.forName中的<driver>也非常方便,比如从Mysql数据库换到Oracle数据库,只要更换facade接口中的driver就可以.
我们做成了一个Facade接口,使用该接口,上例中的程序就可以更改如下:
public class DBCompare {
String sql = "SELECT * FROM <table> WHERE <column name> = ?";
try {
Mysql msql=new mysql(sql);
msql.setString( 1, "<column value>" );
rset = msql.executeQuery();
if( rset.next() ) {
System.out.println( rset.getString( "<column name" ) );
}
} catch( SException e ) {
e.printStackTrace();
} finally {
mysql.close();
mysql=null;
}
}
可见非常简单,所有程序对数据库访问都是使用改接口,降低系统的复杂性,增加了灵活性.
如果我们要使用连接池,也只要针对facade接口修改就可以.
由上图可以看出, facade实际上是个理顺系统间关系,降低系统间耦合度的一个常用的办法,也许你已经不知不觉在使用,尽管不知道它就是facade.
- 第6章 Facade模式
- 《设计模式解析》第6章 Facade(外表)模式
- 《设计模式解析》第6章 Facade(外表)模式
- 《设计模式解析》 第6章 Facade模式 复习题
- 第 7 章 门面模式【Facade Pattern】
- 第1部分 接口型模式 第4章 Facade(外观)模式
- 第11讲:Facade 外观模式
- 第7章 门面模式【Facade Pattern】---- 设计模式之禅读书笔记
- 3.3 《硬啃设计模式》第12章 超级手机 - 外观模式(Facade Pattern)
- 设计模式笔记(6 FACADE)
- 设计模式笔记(6 FACADE)
- 设计模式笔记(6 FACADE)
- 设计模式笔记(6 FACADE)
- 6、门面模式(Facade)
- Facade模式
- Facade模式
- Facade模式
- Facade模式
- 关于Portal(转)
- VS2005+SQL2005 ASP.NET2.0数据库连接
- 不愠不火
- Apache重负荷服务器应如何优化
- 使用SC命令行配置启动windows服务
- 第6章 Facade模式
- 两小时内不宜同吃的食物
- 在服务器上安装、使用MySQL的注意事项
- .net面试题大全(有答案)
- ASP.NET2.0中Gridview中数据操作技巧
- PHP5.3中新增的魔术常量__DIR__
- 蜂蜜美容
- 近期工作内容:将现有的十几个跨平台的易语言支持库转换到EF类库
- .net面试题大全(有答案)