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

当有提示时:客户端最常用的是弹出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   闻缺陷则喜何志丹  阅读(1)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理



点击右上角即可分享
微信分享提示