??????? 項目好忙,好久沒有上過這里了,今天過來一看,居然完全沒有人氣,哈 ... (看來我得努力了)最近看了 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();
(未完待續 …..^_^ )