基礎(chǔ)
一.面向?qū)ο蟪绦蛟O(shè)計的特點
1.封裝(encapsulation)
- 屬性私有:對外提供公有的getter/setter
- public:公有;private:私有;protected:受保護的
-
例如:樹類(封裝了它的價格,名字,給其提供了getter/setter,讓其共有化)
。 封裝
封裝.png
。提供getter/setter
提供.png
2.繼承(succession)
3.多態(tài)(polymorphic)
二.類之間的關(guān)系
1.縱向關(guān)系:比較清晰
- 繼承:父子關(guān)系——extends
- 實現(xiàn):類對接口的實現(xiàn)——implements
2.橫向關(guān)系:取決于語義
-
依賴
。雙方的地位往往是獨立平等的(地位)
。 是偶爾的、臨時性的、不頻繁的(依賴程度)
代碼層面的表現(xiàn)形式而言,往往是局部的變量
。類B以參數(shù)的形式傳入類A的方法。
。類B以局部變量的形式存在于類A的方法中。
。類A調(diào)用類B的靜態(tài)方法。 - 工人和出租車
-
關(guān)聯(lián)
。雙方的地位往往是獨立的、平等的(地位)
。是長期的、穩(wěn)定的、頻繁的(依賴程度)
代碼層面的表現(xiàn)形式而言,關(guān)聯(lián)往往以全局屬性的形式存在 - 程序員和電腦
-
聚合
。雙方的地位不是平等的,是整體和部分之間的關(guān)系(地位)
是長期的、穩(wěn)定的、頻繁的,這種關(guān)系比關(guān)聯(lián)更強,以至于在形式上出現(xiàn)了整體和部分之間的關(guān)系。整體和部分都有自己的生命周期,一方的消失另外一方不會跟著消失。(依賴程度)
。代碼層面的表現(xiàn)形式而言可參考關(guān)聯(lián) - 公司和員工
-
組合
。雙方的地位不是平等的,是整體和部分之間的關(guān)系(地位)
比聚合更強,部分的生命周期取決于整體,部分隨著整體的消失而消失(依賴程度)
。代碼層面的表現(xiàn)形式而言可參考關(guān)聯(lián)
區(qū)分是聚合還是組合的核心點是在生命周期 - 小鳥和眼睛
大家的理解

微信圖片_20181122134039.jpg

