function single(age)
var createsingle = (function() ;
})();
var a = createsingle(12)
console.log(a) // single
var b = createsingle(13)
console.log(b) // single
console.log(a===b) // true
/* 策略類 */
var strategies =
},minlength: function(value, length, errormsg)
},ismobile:function(value,errormsg)$/.test(value))
}};/* 環境類 */
var validator = function()
/* 新增規則集 */
validator.prototype.add = function(obj,rule,errormsg))
}/* 執行規則集 */
validator.prototype.start = function()
}}var formdata =
var checker = new validator()
checker.add(formdata.name,'isnonempty','姓名不能為空')
checker.add(formdata.password,'minlength:6','密碼不能少於6位')
checker.add(formdata.phonenumber,'ismobile','手機號不正確')
var checkerresult = checker.start()
console.log(checkerresult) // 密碼不能少於6位
// 已快取**為例
var createcacheproxy = function(fn) ;
return function()
};};var getname = createcacheproxy(function(name))
getname('tom')
getname('tom')
getname('jerry')
array.prototype.myeach = function(callback, thisarg)
};var test = [1, 2, 4];
test.myeach(function(item, index) );
// 1 0
// 2 1
// 4 2
var event = ,
listen: function(key, fn)
this.list[key].push(fn);
},trigger: function()
for (const item of fnlists)
},remove: function(key, fn)
// 取消所有事件
if (!fn)
// 反向遍歷 避免splice後跳過乙個
for (let l = fns.length-1; l >= 0; l--)
}}};
var a = function(text)
event.listen("hello", a);
event.trigger("hello",'hello')
event.remove('hello',a)
event.trigger("hello",'hello')
setcommand = function(student)
}
剛好某班小明會rap,就表演rap
// 小明會rap
var xiaoming = ,
perform:function()
}// 給小明下個命令
var command = setcommand(xiaoming)
// 小明執行了命令
command() // 雞你太美
var chain = function(fn)
chain.prototype.setnextsuccessor = function(successor)
chain.prototype.passrequest = function()
return res
}chain.prototype.done = function()
}}var check1 = new chain(function(number)
return false
})var check2 = new chain(function(number)
return false
})var check3 = new chain(function(number)
return false
})check1.setnextsuccessor(check2).setnextsuccessor(check3).done()
check1.passrequest(3)
2.aop
function.prototype.after = function(fn)
return res
}}var check1 = function(number)
var check2 = function(number)
var check3 = function(number)
var go = check1.after(check2).after(check3)
go(1)
var planefactory = function(name)
planefactory.prototype.queryline = function()
planefactory.prototype.takeline = function()
var planedirector = (function()
// 查詢哪個跑道可用
var queryline = function()
}} // 確認占用跑道
var takeline = function(plane,line)
console.log(lines)
} return
})()
var plane1 = new planefactory('tome')
var plane2 = new planefactory('jerry')
plane1.queryline()
plane1.takeline()
plane2.queryline()
plane2.takeline()
Python設計模式之MVC模式簡單示例
一.簡單介紹 mvc模式 the model view controller pattern mvc模式是乙個運用在軟體工程中的設計模式。mvc模式脫離了以前簡單的web服務設計邏輯,將開發,測試和維護分離。在mvc模式中,應用被分解為相互作用的模組,模型,檢視,控制。目的在於分離輸入 contro...
Python設計模式之中介模式簡單示例
mediator pattern 中介模式 中介模式提供了一系列統一的系統介面。此模式也被認為是行為模式,因為他能選擇程式處理流程。當許多類開始在互動中產生結果時,可以選用中介模式。當軟體開始組織的時候,許多使用者的要求新增更多的功能。這就導致了要和以前的類不斷互動,除了新類。隨著系統的複雜度加大,...
js五種設計模式說明與示例
var lev function function parent var x parent alert x.name alert x.lev 說明 1.在函式中定義物件,並定義物件的各種屬性,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函式之外,這樣可以避免重複建立該方法 2.引用該物件的時...