1. 程式人生 > >談面向物件的封裝

談面向物件的封裝

封裝是面向物件最重要的特徵之一,封裝就是指隱藏。

之前教科書上的內容關於封裝只是認為隱藏了資料和方法,很少有人提到隱藏了具體實現,而這點在《Java程式設計思想》這本書籍裡,被稱為被隱藏的實現,而在《設計模式精解》裡,封裝的概念包含了實現的隱藏。

我們這裡歸納下,看看到底封裝可以做些什麼:

  • 物件隱藏了資料(例如Java語言的private屬性),避免了其他物件可以直接使用物件屬性而造成程式之間的過度依賴,也可以阻止其他物件隨意修改物件內部資料而引起物件狀態的不一致。
  • 物件隱藏了實現細節。
  1. 使用者只能使用公有的方法而不能使用那些受保護的或者私有的方法,你可以隨意修改這些非公有的方法而不會影響使用者;
  2.  可以隱藏具體型別,使用者不必知道物件真正的型別就可以使用它們(依賴於介面和抽象帶來的好處);
  3. 使用者不需要知道與被使用者有關而與使用者無關的那些物件或者變數,減少了耦合。

由於只能通過公用介面和方法使用它們,客戶程式就不能使用那些受保護的方法(例如Java語言裡的private方法和protected方法),而你可以隨意修改這些方法,並不會影響使用者,從而降低了耦合度。