
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
面向对象编程开发是目前大多数Java程序员都在学习和使用的一种编程开发方式,而本文我们就通过案例分析来简单了解一下,面向对象编程都有哪些优势。
任何一种编程范式的目标都是管理复杂性。但复杂性会以多种形式出现,并不是所有的范式都能同等处理好所有形式的复杂性。大多数编程范式都有一个口号:“一切皆……”面向对象编程的口号是“一切皆对象”,函数式编程的口号是“一切皆函数”,基于Actor的系统的口号是“一切皆Actor”等等。(当然,这些都是为了达到某种效果而夸大的说法。)
OOP鼓励我们使用定义了状态和行为的对象对复杂的实体和过程进行建模。OOP鼓励封装性(协调对对象状态的访问)和多态性(使用公共接口与多种实体交互),尽管实现这些目标的机制因面向对象编程语言而异。当我们用对象对世界进行建模时,我们被鼓励按照is-a(储蓄帐户是一个银行帐户)和has-a(储蓄帐户有一个所有者和账号)的关系来思考问题。
虽然一些开发者大声宣告面向对象编程是一次失败的试验,但事实却很微妙。与其他所有的工具一样,它非常适合用来做一些事情,但也不太适合用来做另一些事情。OOP做不好的事情可能可以用糟糕来形容,许多人都曾见过被运用得荒谬至极的OOP原则。但是,如果我们了解OOP的优点和缺点,就可以在它提供更多价值的地方使用它,在它提供较少价值的地方使用其他语言。
OOP在定义和保持边界方面做得很出色——维护的边界、版本控制的边界、封装的边界、编译的边界、兼容性的边界、安全性的边界,等等。独立维护的库独立于依赖它们的应用程序(以及库彼此之间)而构建、维护和演化,如果我们希望能够自由地从库的一个版本迁移到下一个版本,就需要确保库和它们的客户端之间有清晰的、定义良好的和深思熟虑的边界。平台库可能有访问底层操作系统和硬件的特权,这些权限必须加以小心的控制。我们需要在平台库和应用程序之间建立一个牢固的边界来保持系统的完整性。OO语言为我们提供了精确定义和保持这些边界的工具。
将一个大程序划分为具有明确边界的部分,有助于我们管理复杂性,因为它支持模块化推理——一次只分析程序的一部分,但仍然具备对整个程序进行推理的能力。对于单体程序来说,设置合理的内部边界有助于我们构建跨多个团队的更大的应用程序。Java在单体时代兴盛并非偶然。
从那时起,程序变得越来越小,我们不再构建大单体,而是将许多较小的服务组合成较大的应用程序。在小型服务中,对内部边界的需求较少,足够小的服务可以由单个团队(甚至一个开发人员)维护。类似地,在这些较小的服务中,我们对长时间运行的有状态流程进行建模的需求也较少。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。