📄 一句话概括
观点 2:类可复用,开发就快;封装隔离改动,改一处不牵全身,可维护性就高——拼装带来的两大红利。
📝 本节和前面几节的关系
上一节把零件拼了起来,本节点钞拼装赚到的两笔钱:开发效率与可维护性。
一、开发效率:复用
造一个【日期类】,全项目 30 处直接拿来用——写一次、用 N 次。 更大的复用是类库:Java 标准类库几千个类随取随用,别人造好的零件仓库,你在拼自己的机器。 5.4 学过的典型算法(排序、查找)如今都封在类库里——调一句 sort() 就是站在别人肩膀上。
二、可维护性:封装隔离
维护的痛不在改,而在牵连——改一行、崩十处。 类把改动关进围墙:内部实现升级(查找从线性换二分、存储从文件换数据库),只要方法签名不变,调用方一行不用改。 上一节的【接口稳定】在这里兑现:围墙内翻天覆地,围墙外岁月静好。
三、两笔钱的算术
开发效率省的是【第一次】的工夫,可维护性省的是【以后每一次】的工夫——软件生命周期里,维护的开销远大于初建。 所以工程界说:代码是写给别人读、留给以后改的——OOP 的封装正是为这句话提供的硬件设施。
四、动手 Demo:改内部不动外部
价格标注类从 V1 升级到 V2,内部格式全变,调用方一行不改。
class PriceV1:
def label(self, n):
return "价格:" + str(n)
class PriceV2:
def label(self, n):
return "价格:%04d 元" % n
def print_all(obj):
for n in [5, 50, 500]:
print(obj.label(n))
print_all(PriceV1())
print_all(PriceV2())
实跑输出:
--------------------------------------------------------------------
观点 2——提升开发效率和可维护性
--------------------------------------------------------------------
拼装带来两大红利: 组件可复用(开发快), 改动可隔离(好维护)。
演示【改内部不动外部】: 价格标注类 V1 升级成 V2, 调用方一行不改:
[V1 时期]
价格:5
价格:50
价格:500
[V2 上线, 只换对象, 调用代码没动]
价格:0005 元
价格:0050 元
价格:0500 元
维护场景 过程式写法 面向对象写法
---------------------------------------------------
改显示格式 满世界找打印语句 只改类内部一处
新项目复用 复制粘贴再改一遍 拿类直接用
改动被关在类的围墙里, 围墙外的世界照常运转——
这就是【可维护性】的机制来源, 也是 7.4 要细讲的账。
print_all 一行没改,输出已换代——调用方只认 label() 这个接口,围墙内怎么改它不管。 【⚠️ 2026 现状】这个思路的现代名字叫【面向接口编程】:依赖抽象不依赖实现,是设计模式的总纲。
30 秒实验
- 找一个你改过多次的脚本,估算每次【找地方改】花了多少时间——想想封装能省下多少。
- 把一段重复三遍的格式化代码抽成一个函数再进一步抽成类,体会复用层级的差别。
常见误区
- 以为复用就是复制粘贴——粘贴出去的代码改一处要跟 N 处,是负复用。
- 以为可维护性靠多写注释——结构上的隔离(封装)比注释更能挡住牵连。
自测三问(点开对答案)
1. 观点 2 说 OOP 带来哪两大红利? —— 复用提升开发效率;封装隔离提升可维护性。 2. 封装为什么能提高可维护性? —— 把改动关在类内部,接口不变则调用方不受牵连。 3. 类库和 5.4 的典型算法什么关系? —— 类库把典型算法封装好了,调用即用——复用的极致。- ☐ 下一节(7.5 观点3:面向对象编程是适用于大型程序的开发方法)
相关笔记
- 要点3:了解并应用典型算法 — 类库封装的正是这些招式
- ⌨️ 编程原理 · 索引 — 写给别人读的代码观在那边落地
- 💻 计算机是怎样跑起来的 · 索引