之前學了設計模式,但是總感覺只是表面上的學,當時看懂了,但是沒有實際使用,過了不久自己就忘了,最近1個月自己帶領乙個小組去開發新專案,框架什麼都是自己懵懵懂懂第一次搭建,其中複製貼上以及重複的函式太多,導致我想再深入的學習設計模式以便我在工作中能用到,使我的**看起來更健壯。
用**方式實現單例模式
var
creatediv
=function
(html)
creatediv.prototype.
init
=function()
var proxysingletoncreatediv =
(function()
return instance
}})()
var a =
newproxysingletoncreatediv
('sven1'
)var b =
newproxysingletoncreatediv
('sven2'
)alert
(a===b)
單例模式最終版
"loginbtn"
>
222<
/button>
// var obj ;
// if(!obj)
vargetsingle
=function
(fn)
}var
createliginlayer
=function()
var createsingleloginlayer;if(
!createsingleloginlayer)
document.
getelementbyid
('loginbtn').
onclick
=function()
<
/script>
用策略模式減少if語句的使用
最近在專案有很多地方需要判斷,一直在想能不能不寫那麼多if … else…後來在策略模式中還真找到了方法。
var btn=
function
mypath
(temp)
var res =
mypath
(temp1)
如何判斷2個陣列是否相等?
var
iterator
=function
(obj)
varisdone
=function()
vargetcurritem
=function()
;return
}var
compare
=function
(iterator1 , iterator2)
while
(!iterator1.
isdone()
&&!iterator2.
isdone()
) iterator1.
next()
; iterator2.
next()
;}console.
log(
"2個陣列相等")}
var iterator1 =
iterator([
1,2,
3])var iterator2 =
iterator([
1,2,
4])compare
(iterator1,iterator2)
有3個函式分別表示不同瀏覽器的上傳方式,我們通過迭代器模式來判斷哪個函式可以用。不能使用的函式會返回false ,咱們的主函式 interatoruploadobj中遇到判斷不是false的那個函式,會返回該函式。
var
getactiveuploadobj
=function()
catch
(e)}
vargetflashuploadobj
=function()
return
false
}var
getformuploadobj
=function()
varinteratoruploadobj
=function()
}}var uploadobj =
interatoruploadobj
(getactiveuploadobj,getflashuploadobj,getformuploadobj)
;
我的設計模式之路 單例模式
單例模式也稱作為單子模式,更多的也叫做單體模式。為軟體設計中較為簡單但是最為常用的一種設計模式。下面是維基百科對單例模式的介紹 在應用單例模式時,生成單例的類必須保證只有乙個例項的存在,很多時候整個系統只需要擁有乙個全域性物件,才有利於協調系統整體的行為。比如在整個系統的配 置檔案中,配置資料有乙個...
我的設計模式學習之路2 工廠模式
所謂簡單工廠模式是類的建立模式,是由乙個工廠物件決定建立出哪 一種產品類的例項。角色 工廠類角色 在客戶端的直接呼叫建立產品,乙個具體類,可以根據傳入的引數不同返同不同的例項。抽象產品角色 乙個介面,定義了具體產品所受的規範,即相同的形為。具體產品角色 工廠類角色所需建立的類,乙個具體類或多個。1....
我的設計模式學習之路1 單例模式
單例模式的特點 一.自動初始化 二.只有乙個例項 物件 三.允許整個系統訪問自己 四.私有的構造方法,不能被繼承 類圖 類圖用的是staruml這款軟體畫的,有興趣的可以用用,挺好用的 package com.service public class singleton public static ...