javascript设计模式-(三)

迭代器模式

迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象 的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即 使不关心对象的内部构造,也可以按顺序访问其中的每个元素

迭代器的应用-1
	//未使用迭代器模式

	var getUploadObj = function() {
		try {
			return new ActiveXObject("TXFTNActiveX.FTNUpload"); // IE 上传控件
		} catch (e) {
			if (supportFlash()) { // supportFlash 函数未提供
				var str = '<object type="application/x-shockwave-flash"></object>';
				return $(str).appendTo($('body'));
			} else {
				var str = '<input name="file" type="file"/>'; // 表单上传
				return $(str).appendTo($('body'));
			}
		}
	};

	//使用迭代器模式

	var getActiveUploadObj = function() {
		try {
			return new ActiveXObject("TXFTNActiveX.FTNUpload"); // IE 上传控件
		} catch (e) {
			return false;
		}
	};

	var getFlashUploadObj = function() {
		if (supportFlash()) { // supportFlash 函数未提供
			var str = '<object type="application/x-shockwave-flash"></object>';
			return $(str).appendTo($('body'));
		}
		return false;
	};

	var getFormUpladObj = function() {
		var str ='<input name="file" type="file" class="ui-file"/>'; // 表单上传
		return $(str).appendTo($('body'));
	};

	var iteratorUploadObj = function() {
		for (var i = 0, fn; fn = arguments[i++];) {
			var uploadObj = fn();
			if (uploadObj !== false) {
				return uploadObj;
			}
		}
	};

	var uploadObj = iteratorUploadObj(getActiveUploadObj, getFlashUploadObj, getFormUpladObj);`
	

命令模式

假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的:当某位 客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心是 哪些厨师帮他炒菜。我们餐厅还可以满足客人需要的定时服务,比如客人可能当前正在回家的路 上,要求 1个小时后才开始炒他的菜,只要订单还在,厨师就不会忘记。客人也可以很方便地打 电话来撤销订单。另外如果有太多的客人点餐,厨房可以按照订单的顺序排队炒菜。 这些记录着订餐信息的清单,便是命令模式中的命令对象。

原文地址:https://www.cnblogs.com/hlere/p/6746287.html