【編程語言業務邏輯分類】

1. 面向過程

按照業務邏輯和實現過程步驟來逐步壘代碼,代碼編寫的邏輯即對應於實際實現的步驟過程,核心是過程兩個字,從代碼執行順序上體現出設計者的邏輯過程,整個程序就是把若干個過程串起來的效果。本質上像是構建了一條生成流水線,每一道工序都經過代碼塊嚴格定義。html

優勢sql

複雜問題簡單化,把大的任務逐步分解成一個一個小的任務分步實現,實現了每一個小的步驟便可完成總體任務。邏輯思想符合平常生活中的常規過程化思惟,於是代碼可讀性較高。數據庫

缺點編程

因爲實現邏輯是自上而下的分步過程,任何一個環節的變更,均可能涉及到後續環節的變更,牽一髮而動全身。所以代碼的靈活性、可維護性較差:構建的生產麪包的流水線,若是原料工藝發生變化,極可能要進行生產線的改造;固然想用它來生產飲料,幾乎要推倒重來。函數式編程

應用場景:函數

需求相對固化,不會常常變動,容易經過過程化思惟順序體現出來的狀況。設計

2. 函數式編程

函數式編程也是一種面向過程的編程範式,主要變化在於把重要的功能邏輯經過函數進行封裝,以便重複調用,同時也提升了代碼的維護性。其優勢就不贅述了,缺點除了牽一髮而動全身外(函數的定義發生變化,至少調用它的每一個地方都要隨之改變),對於較爲複雜的應用場景,遇到多個函數須要傳遞共同的參數時,你就會以爲寫起來真是麻煩又囉嗦。若是要實現一個數據庫鏈接查詢修改的程序,數據庫的鏈接參數是共性參數,若是根據數據庫增刪改查的不一樣分別定義函數,數據庫鏈接參數就要重複屢次,而若是經過一個函數來定義並區分,你還得各類if去判斷要執行的sql到底屬於哪種。htm

總之函數式編程不是萬能的,有時候雖然能實現結果,但實現的過程可能比較曲折。對象

3. 面向對象

核心是對象二字,(要理解對象爲什麼物,必須把本身當成上帝,上帝眼裏世間存在的萬物皆爲對象,不存在的也能夠創造出來。面向對象的程序設計比如如來設計西遊記,如來要解決的問題是把經書傳給東土大唐,如來想了想解決這個問題須要四我的:唐僧,沙和尚,豬八戒,孫悟空,每一個人都有各自的特徵和技能(這就是對象的概念,特徵和技能分別對應對象的數據屬性和方法屬性),然而這並很差玩,因而如來又安排了一羣妖魔鬼怪,爲了防止師徒四人在取經路上被搞死,又安排了一羣神仙保駕護航,這些都是對象。而後取經開始,師徒四人與妖魔鬼怪神仙交互着直到最後取得真經。如來根本不會管師徒四人按照什麼流程去取),對象是特徵與技能的結合體,基於面向對象設計程序就比如在創造一個世界,你就是這個世界的上帝,存在的皆爲對象,不存在的也能夠創造出來,與面向過程機械式的思惟方式造成鮮明對比,面向對象更加註重對現實世界的模擬,是一種「上帝式」的思惟方式。blog

這部分文字摘抄自http://www.cnblogs.com/linhaifeng/articles/6182264.html,是目前接觸到的解釋接比較接地氣的說法。我的理解,面向對象是一個抽象歸類的思惟過程,先梳理出具備共同屬性的個體對象,而後對他們抽象歸類。這樣整個編程的設計思想再也不是面向過程當中的自上而下的串聯順序關係,而變成一種屬於和不屬於,具備或者不具備(某種屬性)的關係。

優勢:

對於複雜的場景,功能實現的靈活性更好,換言之適配性和擴展性更好。

缺點:

面向對象是一個抽象的過程,不一樣於面向對象的流水線式順序執行過程,編程的複雜程度更高,首要前提是要梳理出對象之間的關係,歸類出相應的屬性,對於開發者而言要求更高,需具有必定的儲備以後才能勝任通常場景的編程開發。

應用場景:

需求常常變化且相對複雜的軟件,通常需求的變化都集中在用戶層,互聯網應用,遊戲等都是面向對象的程序設計大顯身手的好地方。

相關文章
相關標籤/搜索