封装是面向对象最重要的特征之一,封装就是指隐藏。 之前教科书上的内容关于封装只是认为隐藏了数据和方法,很少有人提到隐藏了具体实现,而这点在《Java编程思想》这本书籍里,被称为被隐藏的实现,而在《设计模式精解》里,封装的概念包含了实现的隐藏。
我们这里归纳下,看看到底封装可以做些什么:
对象隐藏了数据(例如Java语言的private属性),避免了其他对象可以直接使用对象属性而造成程序之间的过度依赖,也可以阻止其他对象随意修改对象内部数据而引起对象状态的不一致。
对象隐藏了实现细节。
使用者只能使用公有的方法而不能使用那些受保护的或者私有的方法,你可以随意修改这些非公有的方法而不会影响使用者;可以隐藏具体类型,使用者不必知道对象真正的类型就可以使用它们(依赖于接口和抽象带来的好处);使用者不需要知道与被使用者有关而与使用者无关的那些对象或者变量,减少了耦合。
由于只能通过公用接口和方法使用它们,客户程序就不能使用那些受保护的方法(例如Java语言里的private方法和protected方法),而你可以随意修改这些方法,并不会影响使用者,从而降低了耦合度。
|