單例模式:
定義:確保乙個類的例項只有乙個,
分為:懶漢式和餓漢式;
區別:乙個是在類載入的時候就直接例項化了,而另乙個則是第一次呼叫他的乙個公有的、靜態的、同步的方法才能得到例項化,
如果要經常要用到該物件的話則用餓漢式,如果可用可不用的話就用懶漢式。
特徵:宣告乙個私有的靜態的類字段,
二是私有化構造器,
三是申明乙個公有的靜態的方法。
四是屬於懶漢式的 判斷私有化的類變數是否為空,如果為空的話才去生成該物件。
五是對外只提供乙個唯一的訪問函式;
工廠模式 factory
針對介面程式設計,不用去依賴實現類;它隱藏了new的關鍵字,對其統一例項化。通過去呼叫工廠的靜態方法才得到該物件,這樣的話不用每次都去new操作,程式的業務邏輯 也就不會混亂,統一由工廠建立,就比清晰。還有就是它的擴充套件性很強。
解決問題:用來解決乙個乙個類的生成方式過多,容易發生變動,或者是父類和子類之間容易替換的地方。
例子:你買東西,你只要自己和售貨員說買什麼,不用管他到底是**生產的吧。
模版模式:
模版模式主要是父類指定流程,子類去實現。
解決問題:解決子類之間**或者是流程的重複問題。
例子:就拿我們的課程表來說吧,每天都會按照乙個課程表去上課,這個課程表就相當於父類定義的乙個流程,然後只要老師安裝這個課程表給我們上課就行了。ok`````````
門面模式(外觀模式) facade
門面模式為整個子系統提供一種高層次的簡單介面,以便減少複雜度和依賴性,使得子系統的使用簡單並且更容易管理。
解決問題:子介面繁多,呼叫複雜,內部互動地方比較多。
例:去乙個商場買東西的時候,你需要買什麼,只需要他給你導購的人就行了,你買東西就方便多了.
策略模式 strategy
定義一系列的演算法,然後把這些演算法乙個個封裝起來,並且可以使他們相互交換
解決問題:某個具體的解決方法有很多種可選擇的實現。
有國道、還有小道都可以去深圳,要速度快點就上高速公路吧
觀察模式 observer
物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。
解決問題:解決多個物件間相互依賴關係的相互通知
乙個群,有幾個好友,當你傳送出訊息,他們都有得到通知。
介面卡:adapter
定義:將乙個介面轉換成客戶希望的介面,使得原本兩個不相容的介面能夠在一起工作。
例子:在現實生活中,像這種介面卡我們經常見到,而且還是經常使用它,如:手機在充電的時候,不可能直接在220v電源上直接充電,而是手機「充電器」進行轉換成手機需要的電壓才可以正常充電,否則就不可以完成充電,這個「充電器」就起到了適配的作用。
裝飾器模式(油漆工模式):decorator
定義:在不改變原來的**情況下,動態地給乙個物件新增一些新功能,decorator模式相比生成子類更為靈活。
解決問題:乙個物件需要經常動態增加屬性或指責。
例子:就拿裝修房子吧,首先它會用石灰去粉刷牆壁,然後你需要搞的好看點的話會去貼上一
些桌布,你要再搞的好看點的話,就再去給它加上幾個盞浪漫點的壁燈!
設計模式筆記 設計模式原則總結
設計模式基本原則總結 1.單一職責原則 srp 就乙個類而言,應該僅有乙個引起它變化的原因。2.開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。意思是對於擴充套件是開放的 open for extension 對於更改是封閉的 closed for modifica...
設計模式筆記 25 總結
斷斷續續經歷了幾個月的時間將webcast的設計模式講座重新完整聽了一遍,並做了筆記,才有了這個設計模式筆記系列,本系列的文章大部分只是給出了基本 的實現,而並沒有去衍生其他的一些例子,筆者認為通過基本的 實現就能夠了解到模式的應用場景,弄出些花哨的例子反倒會讓人眼花繚亂,可能並達不到預期的效果,畢...
設計模式筆記 23種模式總結
23種設計模式分為三種類別 建立型模式 結構型模式 行為型模式 物件導向設計模式體現的是抽象的思想,類是對物件的抽象 抽象類是對類的抽象 介面是對行為的抽象。建造者模式 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示 工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項...