zoukankan      html  css  js  c++  java
  • 学习javascript设计模式之中介者模式

    1、中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的相关对象都通过中介者来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介对象即可。中介者使各对象之间耦合松散,而且可以独立的改变他们之间的交互。中介者模式使网状的多对多关系变成了相对简单的一对多关系。

    <select id="colorselect">
    		<option value="">请选择颜色</option>
    		<option value="red">红色</option>
    		<option value="blue">蓝色</option>
    	</select>
    	
    	<select name="" id="memoryselect">
    		<option value="">请选择大小</option>
    		<option value="16G">16G</option>
    		<option value="32G">32G</option>
    	</select>
    
    	请输入购买数量:
    	<input type="text" id="numberInput" /><br/>
    
    
    	您选择了颜色:
    	<div id="colorInfo"></div><br />
    	您选择了内存:
    	<div id="memoryInfo"></div><br />
    	您输入了数量:
    	<div id="numberInfo"></div><br />
    
    	<button id="nextBtn" disabled="true">请选择手机颜色和购买数量</button>
    
    <script type="text/javascript">
    
    	var colorselect = document.getElementById("colorselect");
    	var memoryselect = document.getElementById("memoryselect");
    	var numberInput = document.getElementById("numberInput");
    	var colorInfo = document.getElementById("colorInfo");
    	var memoryInfo = document.getElementById("memoryInfo");
    	var numberInfo = document.getElementById("numberInfo");
    
    	var goods = {
    
    		"red|32G":3,
    		"red|16G":0,
    		"blue|32G":1,
    		"blue|16G":6
    	}
    
    
    	var mediator = (function(obj){
    		
    			return {
    				change:function(obj){
    
    					var color = colorselect.value,
    						memory = memoryselect.value;
    
    					if(obj == colorselect){
    						colorInfo.innerHTML = color;
    					}else if(obj  == memoryselect){
    						memoryInfo.innerHTML = memory;
    					}
    
    				}
    			}
    	})();
    
    	colorselect.onchange = function(){
    		mediator.change(this);
    	}
    	memoryselect.onchange = function(){
    		mediator.change(this);
    	}
    	numberInput.oninput = function(){
    		mediator.change(this);
    	}
    
  • 相关阅读:
    [转]c#匿名类
    MVC中的验证码
    js常用方法
    centos6.x一直停留在进度条的问题
    使用linux flock文件锁实现任务锁定避免计划任务程序冲突
    nginx访问日志的几个统计命令
    centos安装tidy扩展
    用alert打印js对象
    laravel中的管道设计模式
    CentOS查看每个进程的网络流量
  • 原文地址:https://www.cnblogs.com/junwu/p/4911134.html
Copyright © 2011-2022 走看看