设计模式这样玩泰简单(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()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值