软件架构师需要关系设计模式

当有提示时:客户端最常用的是弹出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);
}

类图:


posted on 2022-06-03 13:30  闻缺陷则喜何志丹  阅读(1)  评论(0编辑  收藏  举报  来源