封装的意义:
抽象的实现并不一定必须是一张表或映射表的数据结构,选择哪种方式对契约进行实现并不重要,对象的抽象优于它
的实现决定。外部视图不关心内部具体如何实现的。
抽象和封装是互补的概念,抽象关注对象的可观察到的行为(外部),而封装关注的是行为的实现。封装通常是通过
信息隐藏来实现的。信息隐藏是将那些不涉及对象本质特征的秘密都隐藏起来的过程。“复杂系统的每部分都不应该依
赖于其他部分的内部细节”,抽象“帮助人们思考他们做什么”,而封装“让程序可以借助最少的工作进行可靠的修改”。
封装在不同的抽象自己提供了明确的边界,因此导致了清晰的分离关注。如:表现层中,我们通常只关注业务层提供
了那些接口,而不会关注接口具体是如何实现的一样。较高抽象层次上的对象看不到较低抽象层次的实现细节。
平时,我们为类定义两个部分:一个接口和一个实现。类的接口描述了它的外部视图,包含了这个类所有实例的共同
行为的抽象。类的实现包含抽象的表示以及实现期望的行为的机制。通过类的接口,我们能知道客户可以对这个类的
所有实例所作出的假定。而客户不能对这个类的细节做任何假定。
“封装是一个过程,它分隔构成抽象的结构和行为的元素。封装的作业是分离抽象的概念接口与实现。”