持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
导言
中介模式是行为型设计模式最后一篇,也是23种设计中最后一种。中介模式,应该很好理解吧,毕竟中介在我们生活中太普遍了,当你去异地工作上班在当地没买房的情况下,是不是要租房子,那你得找房产中介帮你一起找房子,要不然你就要一个个小区自己去看,累个半死。
机场调度中心,这个不知道大家是否熟悉,看过中国机长的话,应该就会知道,它是整个机场的中心,飞机的起降都需要它的运作和调配,没有它,机场得乱套了,当飞机降落时,飞行员要看看哪条线可以降落,这样的操作事故肯定少不了,所以,机场调度中心是非常重要的,飞机仅需要与它信息互通即可,不用管机场现在停了多少架飞机,哪里可以停,按调度中心的指示就基本不会出错。
租房
在导言的两个例子中,房产中介和机场调度中,它们共同的作用就是减少对象间一对多的交互方式,变成一对一对话,这样对于执行方来说,有更简洁清晰的思路。
// 没有中介的参与下
const house1 = {
isEmpty: function () {
return false
}
}
const house2 = {
isEmpty: function () {
return false
}
}
const house3 = {
isEmpty: function () {
return true
}
}
let tenant = {
rent: function () {
if(house1.isEmpty()) {
return house1
} else if (house2.isEmpty()) {
return house2
} else {
return house3
}
}
}
// tenant.rent() // house3
如果是我们自己去租房,没有中介的情况下,那我们可能需要每个小区都要去找,看看哪家有房出租,并且检查室内设施和家具电器等是否良好,费时费力,如果有中介的话,这些事都不需要操心了,我们只要让把需求说出来,让中介帮忙找房,然后去看。
let intermediary = {
hasEmpty: function () {
// 查询手中的资源...
}
}
let tenant = {
rent: function () {
intermediary.hasEmpty()
}
}
中介模式让一对多的方式变成了一对一,简化了逻辑的复杂性,但很明显,中介模式存在的不足就是,自身的业务逻辑可能会随着对接对象的不断增加而变得臃肿,所以也要有节制的使用。