第一種設計模式:單例模式
解釋:乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。但是在js中沒有類這個概念,所以我們要通過一些別的手段來實現單例。
優點:1:在記憶體裡只有乙個例項,減少了記憶體的開銷,尤其是頻繁的建立和銷毀例項。
2:避免對資源的多重占用(比如寫檔案操作)
缺點:沒有介面,不能繼承,與單一職責原則衝突,乙個單例應該只關心內部邏輯,而不關心外面怎麼樣來例項化
現實中的單例例子:
鐵打的黑板,流水的學生。
alert()的使用多個alert要保證唯一性
第二種設計模式:**模式
解釋:定義:乙個物件委託另乙個物件去做某個任務 中間**人
優點: 1、職責清晰。2、高擴充套件性。3、智慧型化。
缺點: 1、由於在客戶端和真實主題之間增加了**物件,因此有些型別的**模式可能會造成請求的處理速度變慢。
2、實現**模式需要額外的工作,有些**模式的實現非常複雜。
例子: 1:買火車票不一定在火車站買,也可以去代售點
2:追女孩子找人幫忙送信
第三種設計模式:介面卡模式
解釋: 作為兩個不相容的介面之間的橋梁
優點:1、可以讓任何兩個沒有關聯的(物件和方法)一起執行。
2、提高了**的復用。
3、增加了**的透明度。
4、靈活性好。
缺點:過多地使用介面卡,會讓系統非常零亂,不易整體進行把握
例子:1.多功能讀卡器
2.手機口轉usb
第四種設計模式:觀察者模式
解釋:觀察者模式又叫做發布訂閱模式(publish/subscribe),它定義了一種一對多的關係,讓多個觀察者物件同時監聽某乙個主題物件,這個主題物件的狀態發生變化時就會通知所有的觀察者物件,使得他們能夠自動更新自己
例子:**直播
常見的幾種設計模式
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點 public class lazyman2 提供對外方法 public static lazyman2 getinstance return singleton 使用乙個工廠類來專門生產物件,使用者只是關心產品,不用關心建立過程 public ...
設計模式之 常見的幾種模式
實際實際上建立在乙個善意的謊言之上。當客戶向我們要求乙個物件的時候,我們的確將乙個物件返回給客戶。然而我們返回的物件卻不是客戶要求的那個物件,我們所返回的物件雖然在行為上和客戶要求的一樣,但是那個物件實際上只是乙個替身。這個冒充的物件稱作 的內部隱藏著乙個指向真實物件的引用。當客戶呼叫 的方法時,這...
常見的幾種JavaScript設計模式
設計模式是在軟體開發中,經過驗證的,用於解決在特定環境下,重複出現的特定的問題的解決方案。在編寫js 的過程中,運用一定的設計模式可以讓我們的 更加優雅 靈活。每個設計模式的構成如下 1 模式名稱 模式的乙個好記的名字 2 環境和問題 描述在什麼環境下,出現什麼特定的問題 3 解決方案 描述如何解決...