Js 設計模式簡單示例(筆記)

2021-09-26 05:51:31 字數 3535 閱讀 3438

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.引用該物件的時...