知识大全 设计模式之Facade(外观)
Posted 数据库
篇首语:莫道桑榆晚,为霞尚满天。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 设计模式之Facade(外观)相关的知识,希望对你有一定的参考价值。
设计模式之Facade(外观) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
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( < 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) prep setString( < column value> ) rset = prep executeQuery() if( rset next() ) System out println( rset getString( < column name ) ) catch( SException e ) e printStackTrace() finally mysql close() mysql=null 可见非常简单 所有程序对数据库访问都是使用改接口 降低系统的复杂性 增加了灵活性 如果我们要使用连接池 也只要针对facade接口修改就可以 由上图可以看出 facade实际上是个理顺系统间关系 降低系统间耦合度的一个常用的办法 也许你已经不知不觉在使用 尽管不知道它就是facade cha138/Article/program/Java/gj/201311/27411相关参考