[Object-oriented] 重用

[Object-oriented] : 重用


前言 :

說到「物件導向程式設計」跟「程序導向程式設計」兩者之間的不同。常常會提到一點 :「物件導向程式設計程式碼比較容易重用」。
物件導向程式設計的前輩工程師,總結了很多經驗寫下了Design Patterns以及其他很多的資料文獻。
讓後續的工程師在重用程式碼的時候,有一些模式可以使用,而不用再去自己創造。
這大大增加了物件導向重用的機會,這類文章網路上已經有很多,這邊就不贅述。
本篇從廣義的抽象概念,來闡述物件導向的重用概念。


說明 :

「程序導向程式設計」在重用的這個領域上,主要是使用「Library」來當作重用的方式。
「物件導向程式設計」在重用的這個領域上,除了沿用程序導向程式設計的「Library」觀念之外,還延伸了獨屬於物件導向的重用方式「Framework」。


「Library」: 將特定的功能封裝成一組程式碼。後續重用的時候,呼叫程式碼提供的介面就可以使用特定功能。
「Framework」: 將特定功能封裝成一組程式碼,並且定義部分程式碼可抽換。後續重用的時候,實做可抽換的程式碼就可以使用特定功能。
Library是一種重用底層的概念,而Framework則是一種重用核心的概念。
下面的章節採用一個簡單的範例來說明這兩種概念。


範例 :

下圖是一個簡單的使用物件導向設計出來的機器人開車程式。
「車」有很多種,有可能是真的汽車,也有可能是遙控車。
「機器人」會依照程式將「車」開到想去的地方。

image


「Library」式的重用
將範例裡的各種車輛,整合起來變成一堆車子的組件。下次有別的地方要使用,只要呼叫這個組件內的車子,就可以使用車子的功能。
一般我們使用的 .NET Framework Class Library裡面的物件,大多是屬於「Library」式的重用。


「Framework」式的重用
將範例裡的機器人程式整合,變成一個機器人的組件。下次有別的地方要使用,只要實做機器人可以操作的不同車輛,就可以使用機器人功能。
一般我們使用的 ASP.NET Framework,就是屬於「Framework」式的重用。
*ASP.NET封裝了的HTTP通訊等等的工作,並且開放定義好的介面(例如 : Page物件)讓工程師改寫。


後記 :

本篇文章講述的概念沒有很特別,平常在撰寫物件導向程式設計的時候,就會不自覺的用到。
但這些是功夫的基礎,有意識的修煉跟無意識的使用還是有差別的,希望能對大家有幫助。

期許自己
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。