???????
項目好忙,好久沒有上過這里了,今天過來一看,居然完全沒有人氣,哈
...
(看來我得努力了)最近看了
Nicholas C. Zakas
的一篇文章,覺得現在既然在做
JavaScript
,不妨模仿
Mr.? Nicholas
那樣,用
Javascript
實現一些設計模式。遲點也許也把
Javascript
實現
Object
的各種特性(如:繼承、多態等)也放上來。
?
1、????????????
Factory
Factory
是我們最常用的模式之一。它主要為我們提供一個獲取類實例的一個接口,把聲明類的過程封裝在了
Factory
中。舉一個
Javascript
最常見的例子:
?
if (typeof XMLHttpRequest != "undefined") {
????return new XMLHttpRequest();
} else if (typeof window.ActiveXObject != "undefined") {
????return new ActiveXObject("MSXML2.XMLHttp");
}
?
???
這個代碼主要是獲得一個XMLHttp的實例,在代碼中,很多時候都會用到。如果每次都寫一個,會變得很麻煩,采用Factory模式的方法。代碼如下:
?
function XMLHttpFactory() {
}
XMLHttpFactory.createXMLHttp = function () {
????if (typeof XMLHttpRequest != "undefined") {
????????return new XMLHttpRequest();
????} else if (typeof window.ActiveXObject != "undefined") {
????????return new ActiveXObject("MSXML2.XMLHttp");
????}
}
在使用時可以直接調用而免去了很多冗余的代碼,而且代碼也非常直觀。
var oXMLHttp = XMLHttpFactory.createXMLHttp();
?
?
2
、
Singleton
Singleton(
單態
)
的作用是保持在界面中保持只有一個實例供調用。這樣可以保持系統對某一個實例使用進行控制。
function MyClass() {
}
MyClass.instance = null; ?//define the static property
MyClass.getInstance = function () {
????if (this.instance == null) {
//
建立自己的實例,并保存
????????this.instance = new MyClass();
????}
????return this.instance;
}
?
在希望獲得改實例的引用時,執行以下代碼:
var oMyObject = MyClass.getInstance();
?
(未完待續
…..^_^
)
?
?