本节书摘来自华章出版社《面向对象的思考过程(原书第4版)》一书中的第1章,第1.2节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著
黄博文 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 对象及遗留系统
在面向对象成为主流之前,开发人员面临的问题一直就是如何将新的面向对象技术与现有的系统集成起来。面向对象与结构化(或命令式)编程之间拥有明显的界限,而结构化编程当时则是主流的开发范式。而我始终反对面向对象和结构化编程是不兼容的这一观点,因为我认为面向对象与结构化编程绝不是互斥的。它们是互补的,因为对象可以与结构化代码很好地集成。直到现在我还经常听到这样的问题:你是一个面向过程的程序员还是面向对象的程序员?我会毫不犹豫地说:“我都是。”
同样,面向对象的代码并不意味着完全替代结构式代码。很多非面向对象的遗留系统(即现存的较老的系统)仍在正常工作,所以为什么要冒着潜在的风险来替换它们?大多数情况下,你不应当替换它们,至少不应当使用这样的理由。使用非面向对象的代码编程并不存在本质上的错误。然而,新一代开发者则会倾向考虑使用面向对象技术(有些情况下也只能这样做)。
过去的20年间,面向对象的开发领域一直在平稳显著地增长,全球社会对网络(比如互联网及移动基础设施)的依赖有力地帮助了面向对象技术飞速发展,甚至成为业界主流。浏览器与移动应用之间的海量交易开辟了全新的市场。在这个市场中很多软件都是全新的,几乎未受到遗留系统的影响。即使需要与遗留系统打交道,也可以使用包装对象将遗留系统包装起来。
包装对象
包装对象是指在面向对象的类中包含其他代码。例如,你可以将结构化代码(比如循环和条件)包装到一个对象内部,使其行为就像对象一样。你也可以使用包装对象来封装特性,比如安全特性、不可移植的硬件特性等。第6章讲述了如何包装结构化代码。
如今,软件开发最有趣的领域之一是遗留代码与移动及Web系统的集成。大部分情况下,一个移动Web前端最终会连接到大型机中的数据。市场对既拥有大型机开发经验又同时拥有移动Web开发经验的开发人员的需求量非常大。
我们在日常生活中有大量使用对象的经历,甚至有时候自己都没意识到在使用对象。当你打电话、使用你的家庭财务系统、玩电脑游戏(以及很多其他情况)时,这都是使用对象的经历。电子高速公路本质上已经成为基于对象的高速公路。随着业务越来越多地使用移动网络,这些业务也越来越多地使用对象,因为电子商务所用技术大多都是面向对象的。
移动网络
无需置疑,互联网的出现为面向对象技术的推广起到了极大的推动作用。这是因为在网络中很适合使用对象。尽管互联网是这场变革的领导者,而移动网络也加入进来并扮演着重要的角色。本书中,术语移动网络(mobile web)适用于移动应用开发和Web开发的上下文中。术语混合应用(hybrid app)则用于呈现在Web设备和移动设备的浏览器中的应用程序。