一听中介大家应该就知道了吧。现实中有没有找过房屋中介租房,买房之类的。大家讨厌中介的一点应该是因为他多赚了你钱。但是中介还是有好处的,比如你找房子更快了,不用自己满大家跑了。但是人家干了活就应该收钱啊,毕竟管理着一大批的租客跟房主。黑心中介除外啊(本人也非常讨厌黑心中介)。在代码中同样存在着中介者模式。
什么是中介者模式
来自大话:“用一个中介对象来封装一系列的对象交互。中介者对象使各对象不需要直接交互从而使耦合松散,可以独立改变他们的交互。”
mediator:房屋中介所抽象 concreteMediator:房屋中介所具体实现(上面是总店,下面是具体的分店) colleage:客户 concreteColleage:具体的客户(用状态区分1是房主2是租客) 这里举例不是很恰当。房主跟租客按理来说需要不同的抽象实现。但是大家理解下,我只讲个思想。
在这类图中mediator依赖于客户,必须知道所有的客户。客户跟客户之间不需要直接通信,租客A跟房主A不需要直接通讯。有房出租告诉中介,中介转发给租客。这就是中介者模式,在代码中同样如此。两个不需要沟通的对象,就找第三者沟通。这也是迪米特法则
中介者模式的优缺点
- 优点 解耦,集中管理减少了不必要的麻烦。减少了沟通成本。
- 缺点 它的优点也是它的缺点,随着客户的增多,中介者管理的对象就越来越多。中介者的职责就变得越来越多,也变得越来越复杂。所以这也是房屋中介收钱的原因,毕竟管理那么多房还是很累的。
总结
虽然中介者模式优点明显,缺点也明显。但是我们平时一直用着这个场景,如html页面。各个组件是不需要直接通信的,都是由dom对象统一管理。所以中介者模式适合的场景就是:有一组对象以定义良好,但是进行了过多的复杂通信的场合。
注意:本文归作者所有,未经作者允许,不得转载