设计模式这样玩泰简单(Golang版)-中介模式
Posted hello_读书就是赚钱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式这样玩泰简单(Golang版)-中介模式相关的知识,希望对你有一定的参考价值。
场景
老板:如果我们现在要实现一个群通知功能,群中的所有成员都能通知其他人,你觉得用什么设计模式比较好
你:好的老板,那就使用中介模式
方案
中介模式,指的是用一个对象来封装一批成员对象,并暴露同一的接口,这个接口可以对这些成员对象施加一些动作.就如它的名称一样,像一个中介代理着他的成员对象去做一些事情,当然了,真正动手的是被他代理的实例.
在这个场景中,我们用中介模式来代理被代理实例的功能,我们建立一个中间者,然后向中介者发一起一起群通知,然后中介者帮我们向所有注册的成员发起通知,这样就可以完成我们期望的功能.
与中介者模式比较相似的是代理模式,之前我们讲过代理模式主要的作用是为了给成员对象增强一些功能,虽然中介者模式也可以做到,但是中介者想解决的是把复杂的图关系理成单一的1对多关系,以中介者为中心,减少复杂度.
实现
see:https://github.com/jjtHappy/design-pattern-so-simple
package main
import "fmt"
type Mediator interface{
Notify()
Register(*Member)
}
type MediatorImpl struct {
members []*Member
}
func (m *MediatorImpl) Notify(){
for _,m:=range m.members{
m.Notify()
}
}
func (m *MediatorImpl) Register(member *Member) {
m.members =append(m.members,member)
}
type Member struct {
Name string
}
func (m *Member) Notify() {
fmt.Println(m.Name+"收到通知")
}
func main(){
mediator:=&MediatorImpl{}
mediator.Register(&Member{
Name: "成员1",
})
mediator.Register(&Member{
Name: "成员2",
})
mediator.Register(&Member{
Name: "成员3",
})
mediator.Notify()
}
以上是关于设计模式这样玩泰简单(Golang版)-中介模式的主要内容,如果未能解决你的问题,请参考以下文章