標籤:lte 裡氏替換原則 應該 ... 簡單 產生 多態 ui設計 擴充
1、為什麼要學習設計模式
A:讓我們對設計模式有一定的瞭解和理解
B:加深我們對物件導向中的抽象類別和介面的理解
C:搞定設計模式的面試
單例設計模式
原廠模式 適配器 模板方式 代理...
2什麼是設計模式
建築工地上,工人在蓋房子,但是看不到製造磚的人
在汽車廠房中,你看到的是組裝汽車的人,而不是製造零件的人
在軟體開發中,UI設計師,系統分析師,代碼人員
因此,一些專家就把他們在解決某一問題的過程中積累的一些經驗進行總結,以協助後來的人更好的掌握從抽象到具體的方法,這就是設計模式
3.設計模式的學習路線
A:物件導向思想的建立 (封裝 繼承 多態)
B:UML
把我們的思想通過一些符號表示出來,任何軟體開發人員都是能夠看懂的。
C:瞭解常見的設計模式
D:學習並使用設計模式
封裝:隱藏實現的一些細節,提供一些公用的訪問方式
繼承:可以具備某些已經存在的功能
多態:對象在不同時刻體現的不同的狀態
設計思想的區別;
抽象類別:是對一組具有相同的屬性和方法的在邏輯上有關係的一種抽象(is a)。
介面:對一組具有相同屬性和方法在邏輯上不相關的事務的一種抽象(like a)。
物件導向設計的幾個基本原則:
A:單一職責
系統中的每一個對象應該只有一個單獨的職責,所有對象關注 的應該是自身職責的完成。基本思想:高內聚,低耦合
B:開閉原則
一個對象對擴充開放,對修改關閉
基本思想:對類的改動是通過增加代碼進行的,而不是修改現有的代碼
C:裡氏替換原則
在任何父類出現的地方,都可以使用子類來替代
D:依賴注入原則
要依賴於抽象,不要依賴於具體的實現
基本思想:在開發中盡量的面向介面編程
E:介面分離原則
不要去使用一些不需要的使用的功能
基本思想:一個介面不要提供太多的行為。
F:迪米特原則
一個對象對其他的對象應該儘可能少的瞭解。
基本思想:降低耦合
G:優先使用組合而不是繼承原則
因為父類的改變都可能影響子類的行為。
10.設計模式分類
建立型模式:建立對象。
結構型模式:對象的組成及對象的關係
行為型模式:對象的行為,對象能夠做什麼(功能)
11.建立型模式
簡單原廠模式
Animal(抽象類別),Dog,Pig,AnimalFactory, AnimalTest
Factory 方法模式
抽象原廠模式
----------------------------------------------------------
1、單例模式(面試)
單例模式:單一的執行個體。保證類在記憶體中只有一個對象
舉例:windows的列印服務,網站計數器
java中的應用:Runtime
2.如何保證記憶體中只有一個對象?
A:把構造方法私人,為走了不讓外界建立對象。
B:在類中去建立一個對象
C:通過一個公用的訪問方式給外界提供一個入口
3.餓漢式單例模式
4.懶漢式單例模式
消極式載入思想:我們什麼時候需要(對象new等),你就什麼時候給。
5.那麼,我們在開發中到底是用誰呢?
一般我們開發中採用第一種方案,也就是餓漢式
原因:
前提:多安全執行緒問題。
面試的時候,會面試懶漢式。
並且,面試懶漢式主要是面試下面幾個問題:
A:消極式載入思想
B:安全執行緒問題:
a:安全執行緒問題是怎麼產生的
b:安全執行緒問題是怎麼解決的 (加一個關鍵字:同步synchronized)
6.其實在JDK提供的類中,已經有單例模式應用,如: Runtime類
1.裝飾模式:
顧名思義,裝飾模式,就是指對XXX進行封裝。
其實就是給對象添加新的功能。
2.給對象添加新的功能
物件導向:繼承。
裝飾模式。
3.舉例:我們都有手機,手機具備打電話的功能。彩鈴 電話 音樂
Phone ,Colorphone,Musicphone,Musiccolorphone
繼承實現和裝飾模式實現
4.java的IO流(裝飾模式的體現)
java設計模式筆記