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

如何做视频网站赚钱南通网站建设排名公司哪家好

如何做视频网站赚钱,南通网站建设排名公司哪家好,毕业设计做网站可以用模版吗,网站建设优化安徽文章目录 1. 概述1.1 作用1.2 角色1.3 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 仲裁者(Mediator)可以封装和协调多个对象之间的耦合交互行为,以减弱这些对象之间的耦合关联。 1.1 作用 将多个对象相互耦合的设计转变为所有对象…

文章目录

  • 1. 概述
    • 1.1 作用
    • 1.2 角色
    • 1.3 类图
  • 2. 代码示例
    • 2.1 设计
    • 2.2 代码
    • 2.3 类图

1. 概述

仲裁者(Mediator)可以封装和协调多个对象之间的耦合交互行为,以减弱这些对象之间的耦合关联。

1.1 作用

将多个对象相互耦合的设计转变为所有对象通过中介协作,从而降低其耦合性

多个对象相互耦合:
多个对象相互耦合

所有对象通过中介(E)相互协作
在这里插入图片描述

1.2 角色

抽象仲裁者(Mediator)角色:封装和实现其子类的协作行为。
具体仲裁者(ConcreteMediator)角色:实现仲裁者行为。
抽象协作者类(Colleague)角色:持有指向仲裁者Mediator对象的引用
具体协作者(ConcreteColleague):

1.3 类图

Mediator
ConcreteMediator
-ConcreteColleagueA:concreteColleagueA
-ConcreteColleagueB:concreteColleagueB
«interface»
Colleague
+mediator:Mediator
ConcreteColleagueA
+Mediator mediator
ConcreteColleagueB
+Mediator mediator

2. 代码示例

2.1 设计

  • 定义抽象仲裁者Mediator
  • 定义具体仲裁者ConcreteMediator
    • 它依赖了需要的具体协作者ConcreteColleagueAConcreteColleagueBConcreteColleagueC
    • 它的Process()方法选择了如何执行何种实际协作者
  • 定义了抽象协作者Colleague
  • 定义了各个实际协作者ConcreteColleagueAConcreteColleagueBConcreteColleagueC
    • 它们实现了抽象协作者Colleague
    • 它们都依赖了抽象仲裁者Mediator
    • 它们的Action()方法,通过所依赖的仲裁者,执行对应的实际协作者的Option()方法
    • 它们的Option()方法,是实际协作中的操作
  • 调用
    • 实例化一个具体仲裁者
    • 实例化三个具体协作者
    • 每个具体协作者关联仲裁者实例
    • 分别执行三个仲裁者的Action()方法完成每一次协作

2.2 代码

  • 代码
package mainimport "fmt"// 抽象中介
type Mediator interface {Process(colleague Colleague)
}// 实际中介,它持有所有具体协作者
type ConcreteMediator struct {concreteColleagueA *ConcreteColleagueAconcreteColleagueB *ConcreteColleagueBconcreteColleagueC *ConcreteColleagueC
}// 该方法实现了各协作者之间通过实际中介的相互协作(该例中实际中介同时维护了实际协作者的协作关系)
func (cm *ConcreteMediator) Process(colleague Colleague) {switch {case colleague == cm.concreteColleagueA:cm.concreteColleagueA.Option()cm.concreteColleagueC.Option()case colleague == cm.concreteColleagueB:cm.concreteColleagueB.Option()cm.concreteColleagueC.Option()case colleague == cm.concreteColleagueC:cm.concreteColleagueC.Option()}
}// 抽象协作者
type Colleague interface {Action()
}// 定义实际协作者A,它关联了中介
type ConcreteColleagueA struct {mediator Mediator
}// 该方法调用中介,已达到调用其他协作者的目的(调用顺序由中介维护)
func (a *ConcreteColleagueA) Action() {a.mediator.Process(a)
}// 该方法是协作者A自身的操作
func (e *ConcreteColleagueA) Option() {fmt.Println("ConcreteColleagueA")
}// 实际协作者B(说明同协作者A)
type ConcreteColleagueB struct {mediator Mediator
}func (e *ConcreteColleagueB) Action() {e.mediator.Process(e)
}func (e *ConcreteColleagueB) Option() {fmt.Println("ConcreteColleagueB")
}// 实际协作者C(说明同协作者A)
type ConcreteColleagueC struct {mediator Mediator
}func (t *ConcreteColleagueC) Action() {t.mediator.Process(t)
}func (t *ConcreteColleagueC) Option() {fmt.Println("ConcreteColleagueC")
}func main() {//实例化一个具体中介concreteMediator := &ConcreteMediator{}//实例化三个实际协作者concreteColleagueA := &ConcreteColleagueA{mediator: concreteMediator,}concreteColleagueB := &ConcreteColleagueB{mediator: concreteMediator,}concreteColleagueC := &ConcreteColleagueC{mediator: concreteMediator,}//具体中介应持有所有协作者concreteMediator.concreteColleagueA = concreteColleagueAconcreteMediator.concreteColleagueB = concreteColleagueBconcreteMediator.concreteColleagueC = concreteColleagueC//协作者A的Action()方法向它的实际中介请求,并由中介按它维护的顺序依次调用协作者concreteColleagueA.Action()//协作者A的Action()方法向它的实际中介请求,并由中介按它维护的顺序依次调用协作者concreteColleagueB.Action()//协作者A的Action()方法向它的实际中介请求,并由中介按它维护的顺序依次调用协作者concreteColleagueC.Action()
}
  • 输出

2.3 类图

«interface»
Mediator
+Process(colleague Colleague)
ConcreteMediator
+ConcreteColleagueA:concreteColleagueA
+ConcreteColleagueB:concreteColleagueB
+ConcreteColleagueC:concreteColleagueC
+Process(colleague Colleague)
«interface»
Colleague
Action()
ConcreteColleagueA
+Mediator mediator
+Action()
+Option()
ConcreteColleagueB
+Mediator mediator
+Action()
+Option()
ConcreteColleagueC
+Mediator mediator
+Action()
+Option()
http://www.yayakq.cn/news/671114/

相关文章:

  • 新建的网站 找不到了专做毕业设计的网站
  • 档案网站建设的意义做足球预测的网站
  • 优秀简洁网站设计工业设计网页
  • 桂林旅游网站建设后端网站开发遇到的难题解决
  • sae 网站模板个人建立网站要多少钱
  • 营销型网站需要注意推荐几个没封的网站2021
  • 使用net域名的大网站ui设计培训班怎么样
  • 哪里有做投票的网站购物网站的排版
  • wordpress 采集教程北京债务优化公司
  • 怎样给网站做优化淘宝网站上的图片是怎么做的
  • 湘潭企业网站建设 p磐石网络一个大型网站建设得多少钱
  • 浏阳 做网站超级简历网站
  • 做车贷的网站代理公司注册网站
  • 湖州网站建设培训教程网站开发需要学习
  • 做卡盟网站赚钱吗如何做自己的博客网站
  • 学计算机的做网站的叫什么工作网站建设与运营财务预算
  • 网站优化工具北京朝阳区
  • 个人网站可以做企业网站吗开发小程序流程
  • 网站的配色方案杭州网络推广公司那家好
  • 铁岭网络推广网站建设四川省的建设厅注册中心网站首页
  • 锦州网站建设排行榜智通人才网招聘网东莞官网
  • 优化网站 提高查询网站开发需求图
  • 全屏响应式网站贵州建设厅网站办事大厅
  • 淘宝联盟个人网站怎么做网站页面设计培训
  • 金湖县城乡建设局网站找南昌兼职做网站的
  • 如何网站开发深圳双区建设
  • 可以在哪些网站做翻译兼职python从入门到实践
  • 旅游门户网站模板网站开发 验收标准
  • 电商模板网站免费网站建设域名
  • 线上网站建设南宁建站服务