Thinking in Java學習筆記(一)物件導論
阿新 • • 發佈:2018-11-08
最近在看java程式設計思想,對其中自己的一些收穫記錄下來,一方面是加強鞏固自己的學習,另一方面也是方便以後翻閱檢視。
1、將物件看作服務提供者
把物件當作服務的提供者,也就是指關注物件能實現哪些功能,提供哪些服務?它需要哪些物件支援才能實現這些功能?
這樣做的好處就是:
1、可以讓我們把重心或者說目標轉換為:建立或者尋找能夠提供理想服務解決方案的一系列物件
2、並且也有助於幫助提高物件的內聚性。
2、類建立者和客戶端程式設計師
類建立者的任務是構建類,提供類的公有方法,客戶端程式設計師使用這些公有方法介面實現業務功能。通過修飾符如:public、private、protected、預設
其中protected和private功能相近,區別在於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)
譯為:使用現有的類合成新的類,稱為組合
這就是它們之間本質性的區別:組合是靜態的,是在類載入前就已經合成了;而聚合是在類載入的過程中進行合成的。
組合的意義是可以在不修改現有介面以及客戶端程式碼(新類中的程式碼)的前提下,修改新類的功能,這就是組合的靈活性所在。一般是通過在新類中設定私有的成員變數,然後修改該成員物件方法介面中的程式碼來實現靈活性。