不平凡軟件,始于2014
鄭州軟件開發(fā)教你如何進(jìn)行面向?qū)ο蟪绦蛟O(shè)計的學(xué)習(xí)
在學(xué)習(xí)一門語言之前最重要的就是要弄清該語言是干什么的,處于什么樣的環(huán)境中,只有對它有所了解才能去更好的去學(xué)習(xí),最近參與了一個面向?qū)ο蟪绦蛟O(shè)計(以下簡稱OOP)的培訓(xùn),這兩天才有空整理一下思路,現(xiàn)在拿出來給大家來分享。鄭州軟件開發(fā)!本文旨在說明以何種方式學(xué)習(xí)OOP,文中如有不當(dāng)之處還請大家指正。
上周看到一個人的帖子,大致的意思是對OOP中的一些概念很困惑,不理解什么是“面向?qū)ο蟮奈鍌€特性”或“三個原則”。說實話,最早我對這些概念的認(rèn)識是背下來的,如果有人問,答得很流暢;后來發(fā)現(xiàn)這些概念很空洞,不知道在說些什么,這時候就答不上來了;直到現(xiàn)在,也不該完全保證對這些概念完全了解,只能結(jié)合具體的應(yīng)用說出個一二。
這也是我對OOP的學(xué)習(xí)認(rèn)識過程,以下就是這過程中總結(jié)的經(jīng)驗,如下:
1.任何OOP都有其獨特的場景,離開了場景,一切設(shè)計都可能毫無意義;同樣,也不能假設(shè)場景,因為任何人都不能把握下一步會是什么樣子。
這就好比收割麥子,除了要知道麥子熟了之外,還要了解交通等狀況。不然等你開著收割機(jī)去收割的時候發(fā)現(xiàn)山路崎嶇,收割機(jī)根本進(jìn)不了田。我之前做過一個優(yōu)化項目。該項目一要支持很多廠家的設(shè)備,二對性能要求很高,三時間有限。經(jīng)過再三討論后,公司決定將影響性能的算法用C++實現(xiàn),將影響兼容性的部分用C#實現(xiàn)。結(jié)果,算法中絲毫沒有用的OOP,交互部分充滿了OO設(shè)計。最終該項目比較成功的完成了。
2.OOP的實現(xiàn)在不同平臺下有不同的呈現(xiàn)方式,脫離平臺,依葫蘆畫瓢最總結(jié)果是不論不類。
舉個例子,C#,Java以及C++是現(xiàn)在主流的三種OO語言,從可維護(hù)性,可擴(kuò)展性等多方面出發(fā),如果用這三種模式去實現(xiàn)一個工廠,其最終結(jié)果必有差異。Java和C++差異不大,但經(jīng)過優(yōu)化后的C#實現(xiàn)方式與前者有很大的不同,因為C#中可以有反射的加入使設(shè)計模式出現(xiàn)了很大的改觀(個人認(rèn)為雖然反射破壞了OOP,但其帶來的好處足以掩蓋其不足,說到底它是雙刃劍,就看怎么用了);
3.OOP是程序設(shè)計的一個分支,有長有短,有它特有的職能,與其他程序設(shè)計理論有同等的地位,他們相互補充,沒有高低貴賤之分。
在一個公司的軟件系統(tǒng)中,面向過程,OO,SOA甚至AOP等同時存在相當(dāng)普遍。相信做SOA的人都了解,SOA中每個業(yè)務(wù)的實現(xiàn)可能是用OOP的方式,但SOA本身卻不是;同樣,過程語言C今天依舊流行;
4.OOP是人經(jīng)驗的積累,并不是一成不變的。
這句話的意思很簡單,論壇中每個人在發(fā)表自己的見解時,不管這個觀點正確還是錯誤,愚蠢還是高明,都是在表達(dá)一種軟件開發(fā)技術(shù)思想。這時候,如果你的思想能夠成功的解決某一領(lǐng)域中的難題,那么你的觀點就進(jìn)入的教科書,供更多的人研究學(xué)習(xí)。面向?qū)ο蟮娜齻€原則,五個特性就是這么來的,它們并不是圣經(jīng),它們一樣需要不斷加入新鮮血液。到目前位置,最經(jīng)典的血液就是設(shè)計模式了。同樣,研究過設(shè)計模式的人都知道設(shè)計模式不僅是四人組的23種,還有很多。但是一旦結(jié)合的具體的語言平臺,適合的就不多了。所以在學(xué)習(xí)的時候一要踏實學(xué)習(xí),二要不拘泥與字面,三要大膽假設(shè),勇于改進(jìn),加入自己的觀點;
不平凡軟件,鄭州軟件開發(fā)公司,鄭州軟件開發(fā),鄭州軟件定制,鄭州微信開發(fā),鄭州進(jìn)銷存定制開發(fā),鄭州OA系統(tǒng)開發(fā),鄭州軟件開發(fā)公司
相關(guān)新聞換一組