(根據MSDN Webcast相關課程整理)
模式:提供重複發生的問題的解決方案的核心。
設計模式:軟體設計過程中某一類問題的一般性解決方案。
物件導向設計模式:物件導向設計過程中、特定情境下,類與相互連信的之間的常見的組織關係。
GOF 23種設計模式
好的設計:可以滿足應對變化提高複用的設計。
原始碼就是設計,軟體設計最大的特點就是需求永遠在變化。
理想化的軟體開發模式:軟體開發=系統設計(設計師)+代碼編寫(程式員)
設計模式不是演算法技巧,不能照搬照用,只能活學活用,必須理解。
即使懂物件導向的語言機制,但如果理解不深入,也並不一定能運用到實際設計與開發中去。
(OOPL)物件導向三大實現機制:
封裝:隱藏內部實現
繼承:複用
多態:改寫對象行為
新增一個員工類型而不需要修改原來的設計,只需要擴充一個工廠類中的方法。
擴充:新增一個功能,不修改原來的設計
改變:修改原來的設計
代碼耦合:就是代碼關係過於緊密,往往改變一小段代碼,需要整個項目做很大的改動。在實際開發中應該盡量避免過高的耦合。介面、繼承是解決高耦合的一種好方法。
對象封裝了行為與狀態即代碼與資料。
物件導向設計三大原則:
1,針對介面編程而不是針對實現編程;
2,優先使用對象組合而不是類繼承(is of關係);
3,封裝變化點;
使用設計模式的正確方法:針對變化點,使用重構來得到模式而不是一步到位的應用所謂的模式
幾條更具體的設計原則:
1, 單一職責原則(SRP):一個類應該只有一個引起它變化的原因
File類,FileInfor類
2, 開放封閉原則(OCP):類模式應該是可擴充的,但是不可修改的(對擴充開放,對更改封閉,儘可能新增)
3, Liskov替換原則(LSP):子類必須能替換它們的基類
4, 依賴倒置原則(DIP):高層模式不應該依賴於低層模組,二者應該依賴於抽象;抽象不應該依賴於實現細節,實現細節應該依賴於抽象
5, 介面隔離原則(ISP):不應該強迫客戶程式依賴於它們不用的方法
介面與抽象類別的區別:
介面是一份契約
抽象類別提供一個架構
<完>