购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 面向对象到底面向什么

相信读者对面向对象的概念并不陌生,无论是职业生涯还是学习过程中都会有所涉及。面向对象理念的重要性在于,它在模块化、可重用性、可读性以及可扩展性等方面都有卓越的贡献。正是这些贡献,使得软件开发变得更加高效和可靠。

1.2.1 面向对象的基本概念

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式。与之相关的还有面向对象编程语言(Object-Oriented Programming Language,OOPL)、面向对象设计(Object-Oriented Design,OOD)以及面向对象分析(Object-Oriented Analysis,OOA)。通常,我们所说的面向对象,主要是指面向对象编程。实际上,面向对象涵盖分析、设计和编程三个核心阶段。

提到面向对象编程,首先想到的就是它的四大特性:封装、抽象、继承和多态。尽管你可能不完全理解它们,但这些特性已经成为面向对象编程的代名词。然而,本小节并不打算过多地探讨什么是面向对象编程、什么是面向对象编程语言,以及如何编写高质量的面向对象代码。

相反,笔者想和读者深入探讨的是:面向对象到底是在面向什么。

首先,给出这个问题的答案:面向对象实际上是在解决分类问题,或者说,是在解决领域划分的问题。很多时候,我们可以将领域驱动设计(Domain-Driven Design,DDD)和面向对象编程放在一起讨论和分析。当然,这两者并非完全相同。领域驱动设计主要关注的是业务领域的划分,以及如何按照业务规则来拆分核心领域等;而面向对象编程则是在计算机软件领域指导如何划分代码逻辑,使其独立且具体。这样既保证了“对象”与“对象”之间的独立性,又维护了它们之间的关联性。

1.2.2 类与类之间的关系

在面向对象编程中,仅有类是不够的。类就像生产线上的孤立机器,如果缺乏连接这些机器的传送带,就无法实现产品在不同机器之间的传递与再加工。因此,当我们讨论面向对象时,需要深入思考如何设计类与类之间的关系。这既包括对单个类的设计和实现的关注,也包括对类之间调用和关联实现的重视。

幸运的是,现阶段存在许多成熟的设计模式,它们为我们设定了基本的关系框架。我们只需按照这些模式的规定来实现,便能确保类之间的关系得到妥善处理。这些设计模式犹如巨人的肩膀,使我们能够看得更远。下面以观察者模式为例,帮助读者更深入地理解类与类之间的关系。

这段代码展示了观察者模式的基本实现。首先,定义了一个Subject主题类,它的主要职责是收集观察者列表,并提供注册、删除以及通知观察者实例的方法。Observer类作为观察者,主要任务是接收主题发布的消息。

在面向对象编程中,类之间的关系主要划分为两种:继承和组合。子类通过继承父类,可以扩展或修改从父类继承来的方法或属性,这有助于实现代码的可重用性和可扩展性。而组合是指一个类可以包含另一个类的对象作为其成员变量。通过组合,一个类可以利用其他类的功能,而不必继承其所有特性。这种关系也被称为has-a关系,表示一个对象“拥有”另一个对象。 FrMADs9BJdhSQwusiOxnqIgLhOe+1AERNOQflNpphiENr+WXS0qr/Rn0wfNjQoib

点击中间区域
呼出菜单
上一章
目录
下一章
×