面向對象(Object Oriented,OO)是軟件開發(fā)方法。面向對象的概念和應用已超越了程序設計和軟件開發(fā),擴展到如數據庫系統(tǒng)、交互式界面、應用結構、應用平臺、分布式系統(tǒng)、網絡管理結構、CAD技術、人工智能等領域。面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術 發(fā)展到一定階段后的產物。---------百度百科
理論性的想必大家都已看過,這里不必多說,今天我們就日常開發(fā)中的實際而講,從另一個角度解析軟件開發(fā)領域的面向對象。
每個新事物的產生都是有過程的,面向對象也不例外,那么沒有面向對象之前我們大多是用什么方式開發(fā)呢?想必大家心里都有一個共同的詞語-----面向過程。對于面向過程概念大家想必十分熟悉吧,現在還有很多人在用這種方式開發(fā),它有自己獨到的魅力---簡單。做到哪里寫哪里,只需考慮眼前的技術問題是否能解決就可以了。當你遇到的問題從不重復時它真的是再好用不過了。但是當大家不斷的在開發(fā)領域探索時肯定會發(fā)現相同的問題不停出現,而按照面向過程的思想就地解決,一次兩次三次,漸漸的你會發(fā)現自己做了好多重復的工作,而且隨之而來的問題是擴展性差、可維護性差,寫過的東西不能重用。
有了存在問題自然就會有人去解決。那你可以說我們建個公共類,有相同的問題就在公共類里寫一個方法其它地方調用不就可以了?但是我們會發(fā)現有些問題只是相似,有部分相同部分不同怎么辦?那你會說我們把相同的封裝不同的單獨寫不就可以了?那這時候又有一個問題蹬蹬瞪跑出來了,它更復雜,它是之前的問題升級版,它包括我們封裝的部分又包括之前其中一個問題的一部分,怎么辦?再封裝剩余的交集?
當這種情況發(fā)生到一定量級時單純的這樣處理很片面,我們無法直觀的了解這些相似問題之間的關系,我們也無法主動的避免這些問題。那么問題的核心在哪里?我們在現實處理業(yè)務的場景時,往往也是一個需求剛開始很簡單,再往后就會升級一次又一次變得越來越復雜,新的需求往往會在舊的功能上進行分支。這像什么?一個樹形,這些需求為什么會在一棵樹上?因為它們有很多共同點。而這個這些共同點都會指向上級直到樹的根,而這個根就是我們的問題核心,就是我們要處理的“對象”。他在概念上是包含子節(jié)點的,而在實現上是被子節(jié)點包含的(概念上是所有節(jié)點的并集,實現上是所有節(jié)點的交集)。問題被剝離出來了就要解決,而我們這種針對這個對象來思考來解決問題從而達到解決與之相關的所有問題的思想就是面向對象的思想。而最佳實踐-----本章不做討論。
本章先開個頭,講的比較粗,若有不足請大家多多指點。