1.如何理解“面向?qū)ο蟆保?/h1>
關(guān)于面向?qū)ο蟮睦碚摗⒘髋梢幸ǎ瑢懞芏啾緯贾v不完裙品,每個人對于“面向?qū)ο蟆钡睦斫庖哺鶕?jù)各人的項目實戰(zhàn)經(jīng)歷而不同。
但對于初學(xué)者咧党,其實一開始最重要的不是那些高深的理論遣疯,而是“輕量級”的理解“面向過程”/“面向?qū)ο蟆钡膮^(qū)別和聯(lián)系。
(1)一個樸實的例子
一個公司有CEO凿傅、CTO缠犀、程序猿3個人。
CEO說:“請CTO帶領(lǐng)程序猿實現(xiàn)一個APP聪舒”嬉海”
CTO為了“實現(xiàn)APP”,需要細化需求箱残、分析關(guān)鍵技術(shù)滔迈、編寫代碼框架。
程序猿為了“實現(xiàn)APP”被辑,需要理解細化的需求燎悍,在代碼框架中編寫具體的業(yè)務(wù)代碼。
(2)從這個例子中盼理,理解“面向過程”
“實現(xiàn)APP”就是一個任務(wù)谈山,
為了完成這個任務(wù),CTO宏怔、程序猿都采用了上一篇提到的“面向過程”的思維去完成任務(wù)奏路。
CTO為了完成任務(wù)用了3步:
STEP1.細化需求畴椰;
STEP2.分析關(guān)鍵技術(shù);
STEP3.編寫代碼框架鸽粉。
程序猿為了完成任務(wù)用了2步:
STEP1.理解需求斜脂;
STEP2.編寫具體的業(yè)務(wù)代碼;
這就是面向過程:
面向過程的核心是如何將1個任務(wù)有條有理的分解成若干步驟触机。
(3)從這個例子帚戳,理解“面向?qū)ο蟆?/h3>
CEO有很多事要處理,對于“實現(xiàn)APP”這種任務(wù)不能親力親為儡首。
于是CEO為了完成“實現(xiàn)APP”這個任務(wù)片任,他的思維是將這個任務(wù)安排給哪些人來共同完成。
CEO認為如果給CTO安排“實現(xiàn)APP”這個任務(wù)椒舵,CTO就能完成技術(shù)架構(gòu)層面的事情。
CEO認為如果給程序猿安排“實現(xiàn)APP”這個任務(wù)约谈,程序猿就能完成技術(shù)實現(xiàn)層面的事情笔宿。
于是CEO只需要找到CTO和程序猿,對他們說棱诱,請完成“實現(xiàn)APP”這個任務(wù)泼橘,就可以了。
這里就引出了“面向?qū)ο蟆钡幕靖拍睢?b>類
CEO迈勋、CTO炬灭、程序猿就是“面向?qū)ο蟆钡氖澜缰械?個類
這里還引出了“面向?qū)ο蟆钡幕舅枷搿?b>職責(zé)
CEO類的職責(zé)是安排任務(wù),CEO并不關(guān)心任務(wù)具體怎么完成靡菇。
CTO類的職責(zé)是從技術(shù)架構(gòu)的視角完成任務(wù)重归。
程序猿類的職責(zé)是從技術(shù)實現(xiàn)的視角完成任務(wù)。
這里也引出了“面向?qū)ο蟆焙汀懊嫦蜻^程”的關(guān)系
CEO類在自己的職責(zé)范圍內(nèi)厦凤,完成任務(wù)的具體過程采用的是“面向過程”:喊CTO干活兒->喊程序猿干活兒
CTO類在自己的職責(zé)范圍內(nèi)鼻吮, 完成任務(wù)的具體過程采用的是“面向過程”: STEP1->STEP2->STEP3。
程序猿類在自己的職責(zé)范圍內(nèi)较鼓, 完成任務(wù)的具體過程采用的是“面向過程”: STEP1->STEP2椎木。
(4)總結(jié)一下
面向?qū)ο螅褪前褟?fù)雜問題歸類博烂,每個類認領(lǐng)一部分任務(wù)香椎。
面向過程,就是把認領(lǐng)的一部分任務(wù)禽篱,逐個畫流程圖畜伐。
2.關(guān)于“面向?qū)ο蟆毙枰莆盏幕炯夹g(shù)點
2.1.一個類...
先來描述一個CEO類,偽代碼如下:
類 CEO{
公開屬性:身高
私有屬性:性取向
公開行為:實現(xiàn)APP
私有行為:扣鼻屎
}
再來實例化CEO類躺率,偽代碼如下:
這里展開說一下實例化——類表示一類東西烤礁,例如“人類”讼积,但是把“人類”實例化以后就是具體的一個人,這個具體的人就是“對象”脚仔,這個過程就是“實例化”勤众。
CEO張三 = 實例化(CEO類)
CEO李四 = 實例化(CEO類)
打聽 CEO張三.身高——>張三會告訴你
打聽 CEO張三.性取向——>這個張三覺得是隱私,他不會告訴你鲤脏,只有他自己知道
請CEO張三 實現(xiàn)APP——>張三可以去完成這個任務(wù)
請CEO張三 扣鼻屎——>你叫張三這么干们颜,這三不會干的,但是他自己有可能悄悄干
最后猎醇,還有一種特殊的屬性和方法——靜態(tài)屬性窥突、靜態(tài)方法
在“面向過程”的世界中,有很多普通但實用的函數(shù)硫嘶,例如:計算sin/cos阻问。
這些函數(shù),如果強行按照“面向?qū)ο蟆比ヌ茁偌玻悬c牽強称近,實戰(zhàn)中不實用。
于是“面向?qū)ο蟆睘榱俗詧A其說哮塞,就有了靜態(tài)屬性刨秆、靜態(tài)方法。
偽代碼如下:
類 Math{
? 公開 靜態(tài)屬性:π
? 公開靜態(tài)方法:sin
公開靜態(tài)方法:cos
}
調(diào)用的時候
Math.sin()
Math.cos()
總結(jié)一下忆畅,關(guān)鍵術(shù)語
關(guān)鍵術(shù)語:類衡未、對象、屬性家凯、行為缓醋、實例化、靜態(tài)屬性&靜態(tài)方法
2.2.N個類...
CEO類绊诲,偽代碼如下:
類 CEO{
? ? 公開屬性:雇傭的程序猿對象
? ? 公開方法:實現(xiàn)APP{
? ? ? ? 讓 雇傭的程序猿對象 實現(xiàn)APP
? ? }
}
程序猿類改衩,偽代碼如下:
類 程序猿{
? ? 公開方法:實現(xiàn)APP{
? ? ? ? STEP1.理解需求
? ? ? ? STEP2.實現(xiàn)代碼
? ? }
}
CEO和程序猿的關(guān)系:
CEO張三 = 實例化CEO類
程序猿李四 = 實例化程序猿類
CEO張三.雇傭的程序猿對象 -> 程序猿李四——>這樣兩個對象就產(chǎn)生了聯(lián)系
請CEO張三.實現(xiàn)APP——>CEO張三內(nèi)部就會讓程序猿李四在背后干活兒了。
上述就是類與類之間的典型關(guān)系驯镊,當然還有很多其它的關(guān)系(父子之間的繼承關(guān)系葫督、夫妻之間的組合關(guān)系等等)
“面向?qū)ο蟆痹噲D用這種形式描述一個復(fù)雜的世界,
在這個世界中板惑,每個對象各司其職橄镜,各掃門前雪,不越職責(zé)半步冯乘。
關(guān)鍵術(shù)語:繼承洽胶、組合
2.3.N個類組裝好之后...
按照面向?qū)ο蟮乃枷耄橄驨個類,每個類有自己的職責(zé)姊氓,類與類之間形成了關(guān)系丐怯,
然后,就好像機械齒輪一樣翔横,由一個齒輪觸發(fā)读跷,級聯(lián)的一個個運轉(zhuǎn)起來。
這也許就是“面向?qū)ο蟆弊钣腥さ臅r刻禾唁,
一個使用“面向?qū)ο蟆钡某绦蛟澈孟褚粋€造物主效览,
將現(xiàn)實世界中的一個復(fù)雜系統(tǒng),大卸八塊荡短,抽象成若干齒輪丐枉,在虛擬的世界中重新構(gòu)建出來。
今天就到這里了掘托。