时间:2021-07-01 10:21:17 帮助过:8人阅读
中介者模式的作用就是解除对象与对象之间的紧耦合关系。
示例:
假设我们正在开发一个购买手机的页面,购买流程中,可以选择手机颜色以及输入购买数量,同时页面中可以对应展示输入内容。还有一个按钮动态显示下一步操作(该颜色库存量充足,显示下一步;否则显示库存不足)。
<p> <span>请选择颜色</span> <select id="selColor"> <option value="roseGold">玫瑰金</option> <option value="luxuryGold">土豪金</option> </select> </p> <p> <span>请输入购买数量:</span> <input type="text" id="selNum" /> </p> <p> <span>您选择的颜色为:</span><strong id="conColor"></strong> <span>您选择的数量为:</span><strong id="conNum"></strong> </p> <button id="nextBtn">加入购物车</button>
当页面中新增加另外一个下拉列表框,代表手机内存,上述代码改动面很大。
引入中介模式
所有的节点对象只跟中介者通信。
当下拉选择框selColor、selMemory亦或文本框selNum发生了事件行为时,仅通知中介者它们被改变了,同时把自己当做参数传入中介者,以便中介者辨别是谁发生了改变,剩下的事情交给中介者对象来完成。
<p> <span>请选择颜色:</span> <select id="selColor"> <option value="roseGold">玫瑰金</option> <option value="luxuryGold">土豪金</option> </select> </p> <p> <span>请选择内存:</span> <select id="selMemory"> <option value="16G">16G</option> <option value="64G">64G</option> </select> </p> <p> <span>请输入购买数量:</span> <input type="text" id="selNum" /> </p> <p> <span>您选择的颜色为:</span><strong id="conColor"></strong> <span>您选择的内存为:</span><strong id="conMemory"></strong> <span>您选择的数量为:</span><strong id="conNum"></strong> </p> <button id="nextBtn">加入购物车</button>
缺点:最大的缺点是系统中会增加一个中介对象,因为对象之间交互的复杂性,转移成了中介对象的复杂性,使得中介者对象经常是巨大的,很难维护。
一般来说,如果对象之间的复杂耦合确实导致调用和维护出现了困难,而且这些耦合度随项目的变化呈指数增长,那么我们可以考虑用中介者模式来重构代码。
以上就是JavaScript中介者模式定义和如何引用代码详解的详细内容,更多请关注Gxl网其它相关文章!