1. 程式人生 > >Thinking in Java學習筆記(一)物件導論

Thinking in Java學習筆記(一)物件導論

  最近在看java程式設計思想,對其中自己的一些收穫記錄下來,一方面是加強鞏固自己的學習,另一方面也是方便以後翻閱檢視。

1、將物件看作服務提供者

  把物件當作服務的提供者,也就是指關注物件能實現哪些功能,提供哪些服務?它需要哪些物件支援才能實現這些功能?
  這樣做的好處就是:
  1、可以讓我們把重心或者說目標轉換為:建立或者尋找能夠提供理想服務解決方案的一系列物件
  2、並且也有助於幫助提高物件的內聚性

2、類建立者和客戶端程式設計師

  類建立者的任務是構建類,提供類的公有方法,客戶端程式設計師使用這些公有方法介面實現業務功能。通過修飾符如:public、private、protected、預設

來對方法進行訪問限制,防止客戶端程式設計師對一些關鍵的方法進行修改或者破壞。
  其中protectedprivate功能相近,區別在於protected在繼承類中可以訪問到,而private只能在當前類中才能訪問到。
  而預設也被稱為包訪問許可權,在同一個包中,它就相當於public,而在包外,它就變成了private。

3、 組合和聚合

  Thinking in Java對組合和聚合是這樣定義的:composing a new class from existing classes, this concept is called composition (if the composition happens dynamically, it’s usually called aggregation)
  譯為:使用現有的類合成新的類,稱為組合

,如果這種組合是動態的,就稱為聚合
  這就是它們之間本質性的區別:組合是靜態的,是在類載入前就已經合成了;而聚合是在類載入的過程中進行合成的。
  組合的意義是可以在不修改現有介面以及客戶端程式碼(新類中的程式碼)的前提下,修改新類的功能,這就是組合的靈活性所在。一般是通過在新類中設定私有的成員變數,然後修改該成員物件方法介面中的程式碼來實現靈活性。