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中的代码.减少了耦合度.