Facade为子系统的一组接口提供一个一致的界面,比如对数据库的访问,当从一种数据换为另外一种的时候,接口不变,因此客户端不变,减少了耦合度.
列举:
#include // MFC DAO database classes.
class DB
{
static CDaoDatabase s_db;
public:
static void Init()
{
try
{
s_db.Open(_T("*.mdb"),FALSE,FALSE,";pwd=1");
}catch(CDaoException *e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
return;
}
}
void Store(int iid,int icount)
{
try
{
s_db.Excute(BuildInsertionStatement(iid,icount));
}catch(CDaoException * e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
return;
}
}
private:
CString BuildInsertionStatement(int iid,int icount)
{
CString str;
str.Format ("Insert inter Products value ('%d','% d'),pd.ID,pd.Count");
return str;
}
}
//client
void main()
{
DB.Init();
DB.Store(1,5);
}
注:以上是实现插入access数据库的例子,改变数据库为sql server的时候,改变DB中的s_db和Init()相关的函数和变量,不改变client中的代码.减少了耦合度.
博客介绍了Facade模式,它能为子系统接口提供一致界面,以数据库访问为例,当更换数据库时接口不变,客户端代码无需改动,减少了耦合度。还给出了插入Access数据库的示例代码,说明更换为SQL Server时,仅需改变部分代码,客户端代码不变。
1028

被折叠的 条评论
为什么被折叠?



