-
Notifications
You must be signed in to change notification settings - Fork 0
0808从server端的main.processor.go Processor.serverProcessMes()方法探究UserProcess、smsProcess以及各类mes包,他们的协调运作方式以及差异性
ziyouzy edited this page Aug 8, 2020
·
2 revisions
func (this *Processor) serverProcessMes(mes *message.Message) (err error) {
//看看是否能接收到客户端发送的群发的消息
fmt.Println("mes=", mes)
switch mes.Type {
case message.LoginMesType :
//处理登录登录
//创建一个UserProcess实例
up := &process2.UserProcess{
Conn : this.Conn,
}
err = up.ServerProcessLogin(mes)
case message.RegisterMesType :
//处理注册
up := &process2.UserProcess{
Conn : this.Conn,
}
err = up.ServerProcessRegister(mes) // type : data
case message.SmsMesType :
//创建一个SmsProcess实例完成转发群聊消息.
smsProcess := &process2.SmsProcess{}
smsProcess.SendGroupMes(mes)
default :
fmt.Println("消息类型不存在,无法处理...")
}
return
}
ps:再次理解一下抽象与封装的区别:
抽象
处理大而复杂的问题的重要手段是抽象,强调事物本质的东西。
对程序抽象而言,一个语言结构的抽象强调的是该结构外部可观察的行为,与该结构的内部实现无关。
抽象包括过程抽象和数据抽象。
封装
封装是把一个语言结构的具体实现细节作为一个黑匣子对该结构的使用者隐藏起来的一种机制。
从而符合信息隐藏原则。
封装包括过程封装和数据封装。
区别
封装考虑内部实现,抽象考虑的是外部行为
封装是屏蔽细节,抽象是提取共性
const (
LoginMesType = "LoginMes"
LoginResMesType = "LoginResMes"
RegisterMesType = "RegisterMes"
RegisterResMesType = "RegisterResMes"
NotifyUserStatusMesType = "NotifyUserStatusMes"
SmsMesType = "SmsMes"
)