天天看點

《面向對象的思考過程(原書第4版)》一1.2 對象及遺留系統

黃博文 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

在面向對象成為主流之前,開發人員面臨的問題一直就是如何将新的面向對象技術與現有的系統內建起來。面向對象與結構化(或指令式)程式設計之間擁有明顯的界限,而結構化程式設計當時則是主流的開發範式。而我始終反對面向對象和結構化程式設計是不相容的這一觀點,因為我認為面向對象與結構化程式設計絕不是互斥的。它們是互補的,因為對象可以與結構化代碼很好地內建。直到現在我還經常聽到這樣的問題:你是一個面向過程的程式員還是面向對象的程式員?我會毫不猶豫地說:“我都是。”

同樣,面向對象的代碼并不意味着完全替代結構式代碼。很多非面向對象的遺留系統(即現存的較老的系統)仍在正常工作,是以為什麼要冒着潛在的風險來替換它們?大多數情況下,你不應當替換它們,至少不應當使用這樣的理由。使用非面向對象的代碼程式設計并不存在本質上的錯誤。然而,新一代開發者則會傾向考慮使用面向對象技術(有些情況下也隻能這樣做)。

過去的20年間,面向對象的開發領域一直在平穩顯著地增長,全球社會對網絡(比如網際網路及移動基礎設施)的依賴有力地幫助了面向對象技術飛速發展,甚至成為業界主流。浏覽器與移動應用之間的海量交易開辟了全新的市場。在這個市場中很多軟體都是全新的,幾乎未受到遺留系統的影響。即使需要與遺留系統打交道,也可以使用包裝對象将遺留系統包裝起來。

包裝對象

包裝對象是指在面向對象的類中包含其他代碼。例如,你可以将結構化代碼(比如循環和條件)包裝到一個對象内部,使其行為就像對象一樣。你也可以使用包裝對象來封裝特性,比如安全特性、不可移植的硬體特性等。第6章講述了如何包裝結構化代碼。

如今,軟體開發最有趣的領域之一是遺留代碼與移動及web系統的內建。大部分情況下,一個移動web前端最終會連接配接到大型機中的資料。市場對既擁有大型機開發經驗又同時擁有移動web開發經驗的開發人員的需求量非常大。

我們在日常生活中有大量使用對象的經曆,甚至有時候自己都沒意識到在使用對象。當你打電話、使用你的家庭财務系統、玩電腦遊戲(以及很多其他情況)時,這都是使用對象的經曆。電子高速公路本質上已經成為基于對象的高速公路。随着業務越來越多地使用移動網絡,這些業務也越來越多地使用對象,因為電子商務所用技術大多都是面向對象的。

移動網絡

無需置疑,網際網路的出現為面向對象技術的推廣起到了極大的推動作用。這是因為在網絡中很适合使用對象。盡管網際網路是這場變革的上司者,而移動網絡也加入進來并扮演着重要的角色。本書中,術語移動網絡(mobile web)适用于移動應用開發和web開發的上下文中。術語混合應用(hybrid app)則用于呈現在web裝置和移動裝置的浏覽器中的應用程式。

繼續閱讀