編程思想
對(duì)于做人我們都有自己的想法和做法,想做個(gè)怎樣的人,怎么做,用什么標(biāo)準(zhǔn)和原則來(lái)要求自己都是我們時(shí)常思考的問(wèn)題。
編程也有編程的原則。這些編程的原則呢,就是編程思想。簡(jiǎn)單來(lái)說(shuō)編程思想就是用計(jì)算機(jī)來(lái)解決人們實(shí)際問(wèn)題的思維方式。
主要編程思想:
OPP:Process Oriented Programming 面向過(guò)程編程
OOP:Object Oriented Programming 面向?qū)ο缶幊?br>
SOA:Service-Oriented Architecture 面向服務(wù)架構(gòu)
AOP:Aspect Oriented Programming 面向切面編程
面向?qū)ο?/h4>
思想:以對(duì)象為中心的編程思想(事物對(duì)象化),一切皆對(duì)象(萬(wàn)物皆對(duì)象)。
流程:先尋找對(duì)象,分析數(shù)據(jù)和行為,給對(duì)象進(jìn)行分類,在類中把解決問(wèn)題的思路/流程封裝成一個(gè)個(gè)方法,需要使用時(shí)創(chuàng)建該類的對(duì)象,讓對(duì)象調(diào)用方法來(lái)完成解決問(wèn)題的行為。
優(yōu)點(diǎn):更符合人解決問(wèn)題思路,數(shù)據(jù)和處理被封裝在一個(gè)整體中。
缺點(diǎn):尋找對(duì)象,分析對(duì)象需要經(jīng)驗(yàn),面向?qū)ο蟮奶匦圆惶美斫狻?/p>
面向過(guò)程
思想:以事件為中心的編程思想(模塊化思想),關(guān)注整體的流程。
流程:就是分析出解決問(wèn)題需要的步驟/流程,然后用函數(shù)將之一一實(shí)現(xiàn),使用的時(shí)候直接調(diào)用即可。
優(yōu)點(diǎn):簡(jiǎn)單,符合計(jì)算機(jī)處理思路。
缺點(diǎn):數(shù)據(jù)和處理是分離,解題思路和現(xiàn)實(shí)有區(qū)別。
區(qū)別與聯(lián)系
-
區(qū)別
面向過(guò)程適合處理簡(jiǎn)單的事情,直接關(guān)注流程,簡(jiǎn)單有效。
面向?qū)ο筮m合處理復(fù)雜的事情,先使用面向?qū)ο蟮姆绞綄?duì)整體關(guān)系作出分類,然后,根據(jù)不同的類深入細(xì)節(jié)的處理。 -
聯(lián)系
面向?qū)ο鬅o(wú)法取代面向過(guò)程,他們是相輔相成的。面向?qū)ο箨P(guān)注于從宏觀上把握事物之間的關(guān)系,在具體到如何實(shí)現(xiàn)某個(gè)細(xì)節(jié)時(shí),仍然采用面向過(guò)程的思維方式。面向?qū)ο笕绻x開了面向過(guò)程,就無(wú)法實(shí)現(xiàn)真正的落地,成為無(wú)源之水。
面向服務(wù)架構(gòu)
思想:面向服務(wù)以服務(wù)為出發(fā)點(diǎn),組織和協(xié)調(diào)相關(guān)的對(duì)象來(lái)提供目標(biāo)服務(wù),對(duì)外提供必要的參數(shù)輸入接口,將服務(wù)的結(jié)果作為輸出,而“服務(wù)”本身的計(jì)算過(guò)程和組織則被封裝在一起,對(duì)用戶透明。
具體描述:
其實(shí)面向服務(wù)也是以功能(服務(wù))為中心,但其強(qiáng)調(diào)的是功能的整體性,封裝性、自包性,而不是過(guò)程性和協(xié)作性。
整體性:指的是服務(wù)對(duì)外是作為一整體來(lái)體現(xiàn)的。
封裝性:指的是服務(wù)完成的計(jì)算和處理過(guò)程、自有屬性都不直接暴露給外部,除了通過(guò)公共的服務(wù)接口進(jìn)行交互外,用戶無(wú)法也不用知道內(nèi)部的具體組織和協(xié)調(diào)的。
自包性:指的是服務(wù)的完成不依賴于服務(wù)的調(diào)用方,服務(wù)系統(tǒng)的本身就可以完成服務(wù)所需的功能。
因此面向服務(wù)在程序組織上處于更高的層次,是一種粗粒度的組織方法。考慮的是系統(tǒng)間的組織和管理。
面向切面
屬于面向?qū)ο蟮姆懂牐嫦驅(qū)ο蠼M織對(duì)象從縱向角度采用分類歸納法實(shí)現(xiàn)的,關(guān)注的是整體對(duì)象的繼承關(guān)系。而面向切面則從橫向的角度去觀察這些對(duì)象,找到公共的切入點(diǎn),添加切面行為來(lái)處理一些通用的問(wèn)題。