软件架构师需要关系设计模式
当有提示时:客户端最常用的是弹出message对话框;服务端最常用的是写日志文件。
下面的例子假定五个开发组参与:
//核心逻辑组
class IShow
{
public:
virtual void show(const char* szText)=0;
virtual ~IShow(){};
};
class IGlobe
{
public:
virtual IShow& GetShow() =0;
};
void Init(IGlobe& globe,UINT uID )
{
if( 0 == uID )
{
globe.GetShow().show("错误的账号ID(标识符)");
}
}
//服务端业务逻辑组
namespace NServer
{
class CShow : public IShow
{
virtual void show(const char* szText)
{
//将szText记录到日志文件中
}
};
class CGlobe : public IGlobe
{
private :
virtual IShow& GetShow()
{
return m_show ;
}
CShow m_show ;
};
}
//客户端业务逻辑组
namespace NClient
{
class CShow : public IShow
{
virtual void show(const char* szText)
{
AfxMessageBox(szText);
}
};
class CGlobe : public IGlobe
{
private :
virtual IShow& GetShow()
{
return m_show ;
}
CShow m_show ;
};
}
//服务端实现组
void CTest3Dlg::OnButton1()
{
NServer::CGlobe g_globe ;
//...
UINT uID = 0 ;
//...
Init(g_globe,uID);
}
//客户端实现组
void CTest3Dlg::OnButton2()
{
NClient::CGlobe g_globe ;
//...
UINT uID = 0 ;
//...
Init(g_globe,uID);
}
类图:
2021年目标:完成新书《闻缺陷则喜》,本博客右上公告有下载、阅读链接。