## 被隐藏的具体实现
将程序开发人员按照角色为类创建者(那些创建新数据类型的程序员)和客户端程序员(那些在其应用中使用数据类型的消费者)是大有益处的。客户端程序员的目标是收集各种用来实现快速应用开发的类。类创建者的目标是构建类。这种类只向客户端程序员暴露必需的部分,而隐藏其他部分。为什么要这样呢?因为如果加以隐藏,那么客户端程序员将不能够访问它,这意味着类的创建者可以任意修改被隐藏的部分,而不担心对其它任何人造成影响。(例:不修改对外提供的接口,只修改其内部的具体实现,现有接口在依旧能实现原有功能的基础上提供了更加丰富的实现方式)
被隐藏的部分通常代表对象内部脆弱的部分,它们很容易被粗心的或不和内情的客户端程序员所毁坏,因此将实现隐藏起来可以减少程序Bug.
在任何相互关系中,具有关系所涉及的各方都遵守的边界是十分重要的事情。当创建一个类库时,就构建起了与客户端程序员之间的关系,他们同样也是程序员,但是他们是使用你的类库来构建应用、或者构建更强大的类库程序员。如果所有的类成员对任何人都是可用的,那么 客户端程序员就可以对类做任何事情,而不受任何约束。即使你希望客户端程序员不要直接操作你的类中的某些成员,但是如果没有任何访问控制,将无法阻止此事发生。所有东西都将赤裸裸地暴露于人前。
因此访问控制的第1个存在原因就是让客户端程序员无法触及他们不应该触及的部分--这些部分对数据类型的内部操作来说是必需的,但并不是用户解决特定问题所需的接口的一部分。这对客户端程序员来说其实是一项服务,因为他们可以很容易地看出哪些东西对他们来说很重要,而哪些东西可以忽略。
访问控制的第二个存在原因就是允许库设计者可以改变...
|
|