行为设计模式:中介者

以前我们看过迭代器模式。

中介者模式在实现目标上有很大的不同。 它是行为模式之一,其目的是改变对象之间的通信方式。 中介器将代替对象之间的直接通信,而不是直接相互通信。

例如,想象一下金融交易的场景。 您确实想交易和购买,但您不直接从提出报价的那一方购买。 相反,交换在中间,以便您进行交易。

人们想买卖。 交换将对此提供便利。 您有订单对象。

package com.gkatzioura.design.behavioural.mediator;public class Order {private String stock;private Integer quantity;private Double price;public String getStock() {return stock;}public void setStock(String stock) {this.stock = stock;}public Integer getQuantity() {return quantity;}public void setQuantity(Integer quantity) {this.quantity = quantity;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}}

下一个对象是出售股票的金融实体。

package com.gkatzioura.design.behavioural.mediator;public class FinancialEntity {public boolean sell(Order order) {/*** Supposing the sale was successful return true*/return true;}}

然后我们创建交换对象。 我们不会进一步探讨佣金问题,但可以想象事情会变得更加复杂。 交流实际上是我们的调解人。

package com.gkatzioura.design.behavioural.mediator;public class Exchange {private FinancialEntity financialEntity;public Exchange(FinancialEntity financialEntity) {this.financialEntity = financialEntity;}public void serve(Order order) {/*** Choose the financial entity suitable for the order*/financialEntity.sell(order);}}

最后一步是创建交易者对象。

package com.gkatzioura.design.behavioural.mediator;public class Trader {private Exchange exchange;public Trader(Exchange exchange) {this.exchange = exchange;}public void buy(String stock,Integer quantity,Double price) {Order order = new Order();order.setStock(stock);order.setQuantity(quantity);order.setPrice(price);exchange.serve(order);}}

如您所见,交易者对象没有直接与提供股票的金融实体进行交互。

让我们将它们放到一个主类中。

package com.gkatzioura.design.behavioural.mediator;public class Mediator {public static void main(String[] args) {final FinancialEntity financialEntity = new FinancialEntity();final Exchange exchange = new Exchange(financialEntity);Trader trader = new Trader(exchange);trader.buy("stock_a",2,32.2d);}
}

就是这样,您仅将调解器模式用于交换应用程序! 您也可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2018/11/behavioural-design-patterns-mediator.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学500006 算法语言 作业

《算法语言》作业 一、填空题 1、13/2的运算结果为 ,’A’2的运算结果是 。 2、C 语言源程序需经过 、 两个过程生成可执行文件。 3、如果表示16进制常量45,在C 中应写为 。 4、C中变量从其作用域上分为 、 5、表达式X12的值为 。 6、3(12>0)的值为 。…

mysql多数据源事务_多数据源一致性事务解决方案

spring 多数据源配置spring 多数据源配置一般有两种方案:1、在spring项目启动的时候直接配置两个不同的数据源,不同的sessionFactory。在dao 层根据不同业务自行选择使用哪个数据源的session来操作。2、配置多个不同的数据源,使用一个session…

【渝粤题库】陕西师范大学700009 现代生物科技

《现代生物技术》作业 一.名词解释 1.生物技术 2.愈伤组织 3.前体 4.cDNA文库 5.化学酶工程 6.酶分子修饰 7.连续培养 8.DNA芯片 9.细胞融合 10.基因工程载体 11.蛋白质工程 12微生物转化 13.人工种子 14.胚胎移植 15.初级代谢产物 16.动物克隆技术 17、限制性内切酶 18、细胞全…

www.how2j.com_HOW-TO:快速开始使用Spring 4.0,以构建简单的REST-Like API(演练)

www.how2j.comHOW-TO:快速开始使用Spring 4.0,以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程。 不太复杂。 只是一个演练。 生成的应用程序将提供简单的API,将Mongo作为其持久性&#x…

【渝粤题库】国家开放大学2021春3938管理英语2题目

试卷代号:3938 2 0 2 1年春季学期期末统一考试 管理英语2 试题 2021年7月 注 意 事 项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人…

flutter 返回指定界面_Flutter页面路由导航及传参

转载请注明出处: https://learnandfish.com/概述 每个应用都有很多个页面,在flutter中同样也有很多页面,被称之为路由(Router),页面之间的跳转通过导航器(Navigator)进行管理。其中 Navigator.push 和 Navigator.pop 是最简单的跳转到新页面和…

正确的工作流程:我应该使用哪个OAuth 2.0流程?

什么是OAuth 2.0 OAuth 2.0是一个已被广泛采用的委托授权框架,已经存在了很多年,并且似乎已经存在。 如果您不熟悉OAuth 2.0的基本概念,可以使用 川崎孝彦写的优秀文章 。 这只是OAuth 2.0各方的简要提醒: 资源所有者–受保护资…

【渝粤题库】广东开放大学 秘书实务21 形成性考核

👉关注我,看答案👈 选择题 题目: 秘书职能包括以下哪几项? 选择一项或多项: 题目: 秘书职能包括以下哪几项? 选择一项或多项: 题目: 下列不属于企业文化的功能是&#…

mysql workbench入门_5分钟入门MySQL Workbench

接下来进入下一步,使用Workbench执行sql文件:1.打开Workbench,主页面上点击要connect的连接。2.注意系统偏好设置里,MySQL是running的状态,否则无法执行。创建数据库:点击创建数据库按钮,输入数…

【渝粤题库】广东开放大学 形成性考核 - 副本 (17)

选择题 题目:产值中心论关心的焦点是( ) 题目:要求企业“以产品为中心”的业务模式向“客户为中心”的模式转变,这是客户关系管理的( ) 题目:客户关系管理系统需要建立数据仓库…

【渝粤题库】广东开放大学 文化投资与贸易 形成性考核

选择题 题目:文化产业的最大价值在于()的规模效应。 题目:文化企业指那些在文化产业环境下以创意、生产、交换、()文化产品为方式、以期获得商业利润为目的的工商组织。 题目:由文化产业的内涵可…

apache +php + mysql_apache+php+mysql

apachephpmysqlimapldapjdktomcat的安装以下过程在redhat6.2 7.0下通过。使用软件:apache_1.3.19.tar.gzimap-2000c.tar.Zmod_jserv.so..soj2sdk-1_3_0_02-linux.binmysql-3.23.33-pc-linux-gnu-i6862.tar.gzopenldap-2.0.7.tar.gzphp-4.0.4pl1.tar.gzjakarta-tomca…

【渝粤题库】广东开放大学 个人与团队管理 形成性考核

题库查询系统 选择题 题目: 按照KOLB学习周期,一个完整的学习过程包含四个阶段,不属于这四个阶段的是( )。 A、获得经验 B、反思 C、认真分析 D、理论化和应用 选择一项&#xf…

使用Spring Boot和Vue进行有益的开发

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 Vue是一个Web框架,由于它的精简和刻薄,最近引起了很多关注。 …

effective mysql之备份与恢复_Effective MySQL之备份与恢复

第1章五分钟成为一名DBA1.1MySQL备份1.1.1确定数据库的大小1.1.2选择锁策略1.1.3运行时间1.1.4组合信息1.2执行MySQL备份1.2.1运行mysqldump1.2.2安全地备份1.2.3使用mysqldump的好处1.2.4更多信息1.2.5其他选项1.3本章小结第2章理解备份选项第1章五分钟成为一名DBA1.1MySQL备份…

mysql mydumper_系统运维|Mydumper-MySQL数据库备份工具

Mydumper 是 MySQL 数据库服务器备份工具,它比 MySQL 自带的 mysqldump 快很多。它还有在转储的同时获取远程服务器二进制日志文件的能力。Mydumper 的优势并行能力 (因此有高速度) 和性能 (高效的代码避免了耗费 CPU 处理能力的字符集转换过程)更容易管理输出 (每个…

【渝粤题库】广东开放大学 文化传播学 形成性考核

选择题 题目:从人类生活(特别是人类精神生活)的内容与内涵的角度对“文化”界定为:从最为广泛的民族志的意义上看,文化或文明是一个综合性体系,它包括知识、信仰、艺术、道德、法、习俗及作为社会成员的人所…

在日志中搜索时间间隔

介绍 这篇文章与我有关日志分析的迷你系列文章间接相关。 最好阅读两个主要部分,以更好地理解我在说什么。 第1 部分 , 第2部分 。 这篇文章描述了我在实现IDE方法时遇到的一个重要问题。 任务描述 当某人使用日志时,通常只需要调查一个时间…

【渝粤题库】广东开放大学 民事诉讼法 形成性考核

选择题 题目:人民法院认定公民无行为能力的判决作出以后,该公民经过治疗,病情得到好转,逐渐又恢复了民事行为能力。对此种情况,人民法院根据利害关系人的申请,应当如何处理?( &#…

mysql names gb2312_mysql_query(set names gb2312)设置客户端字符集

$connmysql_connect("localhost","root","123456");mysql_select_db("db_bcty365",$conn);mysql_query("set names gb2312");?>其中:SET NAMES ‘x‘语句与这三个语句等价:mysql> SET charact…