
Swift
架构纵览
|
29
要请求。类声明定义了一个命名空间;该命名空间要求其他对象通过额外的点符号来引
用命名空间内部的事物,不过其他对象依然可以引用命名空间内部的事物;命名空间本
身并不会对可见性形成屏障,而
private
关键字则形成了这道屏障。
1.15
设计
现在你已经知道了何为对象,何为实例。不过,程序需要什么对象类型呢,这些对象类
型应该包含哪些方法与属性呢,何时以及如何实例化它们呢,该如何使用这些实例呢?
遗憾的是,我无法告诉你这些,这是一门艺术,基于对象编程的艺术。我能告诉你的是,
在设计与实现基于对象的程序时,你的首要关注点应该是什么,程序正是通过这个过程
不断发展起来的。
基于对象的程序设计必须要基于对对象本质的深刻理解之上。你设计出的对象类型需要
能够封装好正确的功能(方法)以及正确的数据(属性)。接下来,在实例化这些对象
类型时,你要确保实例拥有正确的生命周期,恰到好处地公开给其他对象,并且要能实
现对象之间的通信。
1.15.1
对象类型与
API
程序文件只会包含极少的顶层函数与变量。对象类型的方法与属性(特别是实例方法与
实例属性)实现了大多数动作。对象类型为每个具体实例赋予了专门的能力。它们还有
助于更有意义地组织程序代码,并使其更易维护。
可以用两个短语来总结对象的本质:功能封装与状态维护(我最早是在
REALbasic: The
Definitive Guide
一书中给出的这个总结)。
功能封装
每个对象都有自己的职责,并且在自身与外界对象(从某种意义上说是程序员)之
间架起一道不透明的墙,外界只能通过这道墙访问方法与动作 ...