界面跟socket处理的问题

如: 用户登录功能

CLoginDlg::OnClickLogin() CLoginDlg* ::OnRepLogin()
| |
CLoginSocket::OnLogin(UserName, UserPwd, CLoginDlg*) CLoginSocket* ::OnRepLogin()
| |
CSocket::Send(CLoginSocket*) CSocket::OnRecv()
| |
|--------------------------------------------------------------

这是一个用户登录的过程,
首先, 用户点击[登录]按钮事件 - 调用 CLoginSocket 类的 OnLogin 方法, 同时传入 this
CLoginSocket 类 调用 CSocket 类的 Send(), 同时传入 this
CSocket 类发送包成功, 返回消息后, 响应 OnRecv()
CSocket::OnRecv() 根据 传入的 CLoginSocket* 指针调用 CLoginSocket::OnRepLogin()
CLoginSocket::OnRepLogin() 又再根据 传入的 CLoginDlg* 指针最终显示登录结果到界面.

以上做法, 我发现的问题是 CLoginDlg, CLoginSocket, CSocket 三个类的联系太紧密, 缺一不可, 不可以独立开来, 有什么方法, 可以令到三个类互相独立, 并可以达到上面的效果?
[767 byte] By [sunkill] at [2008-1-7]
# 1
你指的联系紧密是指什么?怎么个紧密法
xrbeck-ALEK at 2007-10-19 > top of Msdn China Tech,专题开发,技术,项目,设计模式...
# 2
用Media(中介者)模式,这里不能帖类图,你看看书吧,这样他们都与中介者耦合,他们之间就不直接耦合了。
lyg_zy at 2007-10-19 > top of Msdn China Tech,专题开发,技术,项目,设计模式...
# 3
因为不能粘类图,如果还不清楚,msn联系吧。lyg_wq@126.com
lyg_zy at 2007-10-19 > top of Msdn China Tech,专题开发,技术,项目,设计模式...