這個問題其實可以從維基百科就可以獲得很詳細的介紹。但其中有幾句話是我覺得很好理解而且也是物件導向的精髓:
- 物件導向程式設計可以看作一種在程式中包含各種獨立而又互相呼叫的物件的思想
- 物件導向程式設計中的每一個物件都應該能夠接受資料、處理資料並將資料傳達給其它物件,因此它們都可以被看作一個小型的「機器」,即物件
還是很複雜嗎?沒關係!這時請站起來深呼吸,然後閉上眼睛休息,當你再次睜眼時你會發現,你一直都在物件導向裡… 因為世界其實就是物件導向!
你碰觸到的許多人事物,都可以視為”物件”,當你傳送訊息給特定物件時,它會接收資料並且處理這些訊息,最後回傳結果或者持續傳遞下去。
這就像是我早上起來的情境:
Ken:嗨,歐嚕早安啊!
(歐嚕接收訊息,處理資料中...)
歐嚕:喵喵~
(Ken接收訊息,處理資料中...)
Ken解讀結果... 閉嘴!別吵我睡覺
我想大家跟旁人講話時,應該不會輸入不必要的訊息吧?
例如跟超商店員結帳時:
Ken:穿7-11制服且站在茶葉蛋旁邊的女性店員,我需要將我的麥香紅茶與花雕雞泡麵結帳…
(大家應該是走到櫃檯,放下物品就結帳了,甚至連一句話都沒有就完成一系列動作,當然我也是)
既然現實生活中是這樣,那麼軟體世界也是,我們需要設計的是每個物件的依賴關係,當輸入少少的資訊就可以只獲得需要的訊息,讓一切變得簡單且好操控。
所以講得這麼長~ 我們設計的無非就是讓傳遞訊息 接收資料 處理資料等過程,變得容易且好執行!
為了達到這樣的目的,我們必須了解Michael Feathers所提出的SOLID Principles。但歸納整理之前,就讓我們先從概念說起,然後一步步的體會這些設計原則吧!
(別問我可不可以不要遵守…如果你可以超越這個原則,或許你可以寫成鐵人賽文章喔!)
那麼~ 明天我們來了解什麼是單一職責與依賴關係吧!