面向?qū)ο?Object Oriented,OO)是軟件開發(fā)方法。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。面向?qū)ο笫且环N對現(xiàn)實(shí)世界理解和抽象的方法,是計(jì)算機(jī)編程技術(shù) 發(fā)展到一定階段后的產(chǎn)物。---------百度百科

  理論性的想必大家都已看過,這里不必多說,今天我們就日常開發(fā)中的實(shí)際而講,從另一個(gè)角度解析軟件開發(fā)領(lǐng)域的面向?qū)ο蟆?/p>

  每個(gè)新事物的產(chǎn)生都是有過程的,面向?qū)ο笠膊焕?,那么沒有面向?qū)ο笾拔覀兇蠖嗍怯檬裁捶绞介_發(fā)呢?想必大家心里都有一個(gè)共同的詞語-----面向過程。對于面向過程概念大家想必十分熟悉吧,現(xiàn)在還有很多人在用這種方式開發(fā),它有自己獨(dú)到的魅力---簡單。做到哪里寫哪里,只需考慮眼前的技術(shù)問題是否能解決就可以了。當(dāng)你遇到的問題從不重復(fù)時(shí)它真的是再好用不過了。但是當(dāng)大家不斷的在開發(fā)領(lǐng)域探索時(shí)肯定會發(fā)現(xiàn)相同的問題不停出現(xiàn),而按照面向過程的思想就地解決,一次兩次三次,漸漸的你會發(fā)現(xiàn)自己做了好多重復(fù)的工作,而且隨之而來的問題是擴(kuò)展性差、可維護(hù)性差,寫過的東西不能重用。

  有了存在問題自然就會有人去解決。那你可以說我們建個(gè)公共類,有相同的問題就在公共類里寫一個(gè)方法其它地方調(diào)用不就可以了?但是我們會發(fā)現(xiàn)有些問題只是相似,有部分相同部分不同怎么辦?那你會說我們把相同的封裝不同的單獨(dú)寫不就可以了?那這時(shí)候又有一個(gè)問題蹬蹬瞪跑出來了,它更復(fù)雜,它是之前的問題升級版,它包括我們封裝的部分又包括之前其中一個(gè)問題的一部分,怎么辦?再封裝剩余的交集?

  當(dāng)這種情況發(fā)生到一定量級時(shí)單純的這樣處理很片面,我們無法直觀的了解這些相似問題之間的關(guān)系,我們也無法主動的避免這些問題。那么問題的核心在哪里?我們在現(xiàn)實(shí)處理業(yè)務(wù)的場景時(shí),往往也是一個(gè)需求剛開始很簡單,再往后就會升級一次又一次變得越來越復(fù)雜,新的需求往往會在舊的功能上進(jìn)行分支。這像什么?一個(gè)樹形,這些需求為什么會在一棵樹上?因?yàn)樗鼈冇泻芏喙餐c(diǎn)。而這個(gè)這些共同點(diǎn)都會指向上級直到樹的根,而這個(gè)根就是我們的問題核心,就是我們要處理的“對象”。他在概念上是包含子節(jié)點(diǎn)的,而在實(shí)現(xiàn)上是被子節(jié)點(diǎn)包含的(概念上是所有節(jié)點(diǎn)的并集,實(shí)現(xiàn)上是所有節(jié)點(diǎn)的交集)。問題被剝離出來了就要解決,而我們這種針對這個(gè)對象來思考來解決問題從而達(dá)到解決與之相關(guān)的所有問題的思想就是面向?qū)ο蟮乃枷?。而最佳?shí)踐-----本章不做討論。

  本章先開個(gè)頭,講的比較粗,若有不足請大家多多指點(diǎn)。

標(biāo)簽: 面向?qū)ο?/a>, 技術(shù)理論