物件導向與程式導向
一、程式導向與物件導向的本質是哲學。
從本質上而言,程式導向的和麵向物件的本質是處理事務的方式。
它們不是所謂的順序結構、類和抽象,也不是轉型過載和繼承等程式設計機制,而是如何理解事務,如何看待事務,如何處理事務的哲學思想。
一、程式導向
程式導向是最基本的程式設計思想,它基於事件本身的邏輯。
也就是要想做一件事,我們應該分哪幾步,先做什麼後做什麼。
譬如以一個飯店炒菜的事情為例,首先買菜,洗菜,切菜,然後熱鍋,燒油,炒制,調味,裝盤,最後查詢這道菜是那桌點的,把菜呈給對應的客人。
這種把一件事情細化為多個步驟,然後按順序完成的思想就叫做程式導向。
程式導向最核心的思路在於如何把一件事務按照邏輯拆解,譬如你肯定無法先熱鍋,然後裝盤,再切菜,再炒制,然後再洗菜。
二、物件導向
物件導向則是在程式導向基礎上進一步發展的團隊協作。在理解過程的基礎上,把任務合理的分給多個角色去做。
依然以飯店炒菜的例子為例,首先安排一個配菜員負責買菜,洗菜,和不斷切菜,再安排一個廚師熱鍋,燒油,炒制,調味,裝盤,最後再安排一個服務員負責上菜。
這種多個角色協作解決事務的思路就叫做物件導向。
物件導向的核心思路在於任務分配的合理,譬如你安排一個人負責熱鍋和買菜,一個人負責燒油和上菜,另一個人負責洗菜和裝盤,廚房大概就會亂成一團。
三、物件導向與程式導向的關係
1. 只有一個物件的物件導向是程式導向,有多組過程的程式導向是物件導向。
程式導向和麵向物件並不是不同的,它們在一定程度上可以相互轉化。
當物件導向只有一個物件,任務全都分配給一個角色的時候,就沒有了所謂的程式導向。
同樣的,當有多個角色同時來解決同一個問題,每個角色負責一組行為時,也就從程式導向變成了物件導向。
1. 程式導向的核心思想是事件的邏輯,物件導向的核心思想是協作的秩序。
程式導向的核心思想是對事件按照邏輯進行合理的拆分,使之細化為按順序執行的步驟。
物件導向的核心思想是如何把任務進行合理的劃分,再分別交給不同的角色。
2. 程式導向是物件導向的基礎,沒有程式導向也就沒有物件導向
物件導向是依賴於程式導向的,要能夠對一個任務進行合理的劃分,必須首先了解這個任務原本大體是怎樣執行的,然後把原本一個角色完成的任務進行合理的拆分。而且拆分之後每個角色的工作還是程式導向的。
同樣以人舉例,程式導向是一個人做事,物件導向是許多個(一個人)一起協作。連基本的一個人都沒有的話,哪來的多人。而且就算一個任務分給多個人做了,每個人自己做事情不還是有邏輯順序的嗎?按上面餐館的例子,配菜員不還是得按買菜洗菜切菜的程式導向流程走嗎?
author:萬能的小奇喵(bilibili)