当前位置: 首页 > news >正文

刮奖网站姓名域名网站

刮奖网站,姓名域名网站,岳阳网站建设哪家好,东莞网站优化哪个公司好概念 创建一个中介来降低对象之间的耦合度,关系”多对多“变为“一对多”。 角色介绍 Mediator:抽象中介者,接口或者抽象类。ConcreteMediator:中介者具体实现,实现中介者接口,定义一个List管理Colleagu…

概念

创建一个中介来降低对象之间的耦合度,关系”多对多“变为“一对多”。

角色介绍

  • Mediator:抽象中介者,接口或者抽象类。
  • ConcreteMediator:中介者具体实现,实现中介者接口,定义一个List管理Colleague对象。
  • Colleague:抽象同事,定义同事类的接口或者抽象类,保存中介者对象,实现同事类通用的方法。
  • ConcreteColleague:具体同事类,实现抽象同事类。通过中介者间接完成具体同事类之间的通信。

UML

中介者

代码实现

interface UserAbs {fun enter(chatRoom: ChatRoom)fun send(msg: String)fun receive()
}data class User(val name: String) : UserAbs {private var room: ChatRoom? = nulloverride fun enter(chatRoom: ChatRoom) {room = chatRoomroom?.enter(this)}override fun send(msg: String) {room?.operation(this, msg)}override fun receive() {room?.getMessage()?.forEach {println(it)}}
}
class ChatRoom(val id: Int) {private val messages = ArrayList<String>()fun enter(user: User) {println("${user.name}进入聊天室$id")}fun operation(user: User, msg: String) {val log = "${user.name}说了$msg"println(log)messages.add(log)}fun getMessage(): MutableList<String> {return messages}
}fun main() {val room = ChatRoom(1)val user1 = User("张三")val user2 = User("李四")val user3 = User("王八")user1.enter(room)user2.enter(room)user3.enter(room)user1.send("你好")
}

优缺点

优点

  • 简化对象间的关系
  • 提高灵活性
  • 促进低耦合

缺点

  • 中介者过于庞大

应用场景

适用于复杂通信对象组,重用对象。

  1. 聊天应用,聊天室
  2. 空中交通控制系统
  3. GUI框架,MVC架构 Controller是中介者,根据View的请求Model
  4. 工作流引擎,协调用户界面、事件之间的关系

总结

中介者模式核心在于引入中介者类,承担中转和协调作用。MediatorLiveData就是使用了中介者模式,可用来管理、合并多个数据源。它的源码可以参考:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYivHGrz-1691306533508)(https://juejin.cn/post/7054720521031647245)]
参考:

  • 基于MediatorLiveData实现红点的统一管理
  • MediatorLiveData使用
  • 中介者模式及其应用场景
http://www.yayakq.cn/news/461079/

相关文章:

  • 网站建设中网站需求分析报告功能保定网站设计公司排名
  • 网站域名登想学室内设计在哪里学比较好
  • 网站模块建设建议网络故障维修
  • 网站搭建代理南昌网站建设设计
  • 南京网站制作案例沈阳网站制作策划
  • 建网站哪个公司好程序员 修电脑 做网站
  • 大型旅行社自建网站无代码编程的应用场景
  • 上海移动网站建设google关键词挖掘工具
  • 云程环境建设集团网站wordpress作者权限
  • 襄阳网站seo公司网站建设项
  • 网站建设套模板wordpress获取当前页地址
  • 红河科技公司 网站建设《语文建设》网站
  • 网站软文制作网络公司注册流程及费用
  • 网站开发常遇到的问题有哪些织梦dedecms5.6 网站搬家详细教程
  • 做前端网站要注意哪些河南郑州新闻头条最新事件
  • 运营服务商官方网站做dnf辅助网站
  • 民治做网站公司女生在建筑公司的职位
  • 网站建设s修改wordpress浏览器小图标
  • 网站建设需要使用阿里云吗北京网站设计 公司新鸿儒
  • 八爪鱼网站建设网页设计与制作课程评价内实
  • 资讯门户网站怎么做网站图片相册代码
  • 响应式旅游网站模版网站开发软件
  • 网站设计方案模板wordpress翻译公司网站
  • 山西大同专业网站建设价格网站制作把图片做背景
  • 惠州的服装网站建设甘肃省专业做网站
  • 大型网站开发企业河南省建设厅人员名单
  • 合肥 网站制作郑州上街区网站建设公司
  • 网站后台添加新闻优秀网站设计作品分析
  • 国际学校网站如何建设seo的范畴是什么
  • 上海哪家公司做网站网站微信登录怎么做