设计原则笔记
來西安快2個星期了,帶領學員們一起學習Flex,當然之前要學習HTML、CSS、JavaScript、XML等相關前端基礎知識,自己也收獲不少。一方面鍛煉了自己的技術能力,同時也提升了項目管理、和人溝通的能力。之前在學習也接觸過一些設計原則,有點印象,可能是當時的代碼量不多,所以體會不深。現在應該有些理解了。
我們做計算機或者軟件開發的,肯定和代碼和文檔打交道的多,有時我們的工作就是這2樣了,當然有時也會開會討論。但是在IT行業,思想決定了您未來的發展方向和晉升的職務。當然,我們的代碼量最好是10K以上,要不然我們無法體會設計原則的思想和精華。
首先,就是設計的基本原則:
1.封裝變化(Encapsulate what varies)
2.面向接口編程而非實現(Code to an interface than to an implementation)
3.優先使用組合而非繼承(Favor compositon over Inheritance)
第一點和第二點相對好理解,但是第三點有點轉不過彎來,后來上網查了一下,如果過多的使用,代碼的耦合度較大,后期不好維護。前輩的理解:因為我們需要體現事物在抽象層面上的共通性,這時候接口就出現了,我們通常更關注can-do而不是is-a(當然不排除很多時候我們關注后者),組合可以幫助我們做到一個事物得到多個事物的功能(真傳),而不是財產(遺傳基因),所以我們可以通過組合來實現接口,以接口繼承的形式來實現一種關注can-do的多繼承。
相比繼承,接口實現更加靈活,組合更加具有可變化性,并且不會讓繼承樹太過復雜,造成類庫的難以控制。
另外我還參考了://blog.csdn.net/Cpp_Java_Man/archive/2006/05/02/705279.aspx,這邊博文對組合和繼承講解比較通俗易懂。我們為什么不用繼承?繼承破壞了類的封裝性,增加了類與類之間的耦合度,雖然繼承是面向對象三大特征之一,我們還是要轉變一下觀念。當然最初學面向對象設計時,我們還是有必要使用繼承。
然后就是5大原則了:
1.單一原則:一個類只完成一系列相同的事情,當然不是說一個類就一個方法。要不然我們修改一處,其他的地方都要修改,為維護性差
2.開放-封閉原則:擴展是開放的,更改是封閉的
3.里氏替換原則:子類必須能夠替換它們的基類。經典的例子就是:企鵝類和鳥類,企鵝是鳥,但是不能飛,所以我們設計這2個類就要注意了。不是簡單的繼承關系了
4.依賴倒置:高層模塊不依賴底層,二者都依賴于抽象;抽象不依賴于細節,細節依賴于抽象,現在還是有些模糊;
5.接口分離原則,這個相對好理解,一個接口就完成一個功能,不要擔任過多的功能。
IT行業,所要求的還是大家的興趣,以及學習新技術能力。當然對于畢業生來說,實踐(代碼量的多少)和理論(專業基礎)是無法替代的。
總結
- 上一篇: javascript天然的迭代器
- 下一篇: 如何添加sersync进程监控脚本