0
点赞
收藏
分享

微信扫一扫

设计模式之工厂方法


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

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


类图:

设计模式之工厂方法_服务端

举报

相关推荐

0 条评论