物件導向精神

物件導向講穿了要有一個最大的精神就是--"共用"

例如

星巴克的店員要泡咖啡

拿起咖啡杯 => 拿咖啡粉 => 經過沖熱水 => 加糖 => 加奶精 => 包裝 =>給客人

這個過程中,拿沖熱水可能都用R20這台機器,所以共用率很高
在程式碼裡面,這台R20的機器可能就是一段一直被高度重複利用的程式碼。

今天假設星巴克一百種飲料,都用到了沖熱水這關,也都用了R20
就表示R20這台機器設計得很好,讓所有的咖啡都可以用到他。

但今天可能有一種飲料,不用加熱水,用不到R20沖熱水機。
那可能我們會用繼承這個物件導向方法來處理改寫R20,但飲料越來越多都不用熱水
全部都無限繼承了,則物件導向的精神就失去了,因為共用度太低了。

要讓程式碼共用度高,好維護,又具有彈性就是物件導向中最難的部分。


再舉一個例子

今天插頭是三叉的插頭,可是牆壁的孔是兩叉的
不好的作法是把三叉的插頭拔掉一根,讓他叉的進兩叉
但就缺乏了彈性,好的做法是我們設計一個轉接頭,讓三叉可以轉兩叉。

再舉一個例子

人體器官的心臟,肝臟都可以移植,可以共用,設計出很多不同的人類。
但人類都需要有心臟,肝臟,肺這些基本的器官。


物件導向有三種最基本的概念

封裝,繼承,多型

類別假設是生物

    人是生物,有生物的特性,所以人繼承生物
昆蟲是生物,有生物的特性,所以昆蟲也繼承生物

但人類跟昆蟲有不一樣的呼吸方式,但人跟昆蟲都需要呼吸
所以要建立一個人類的類別,就要把昆蟲的呼吸區別開來

但兩者的呼吸方式不同,但都還是需要呼吸
所以這個方法必須存在

這就是多型
一個Funtion有多種形態


而人類繼承自生物
生物有的特徵,人類都有

這就是繼承







Comments

Post a Comment

Popular posts from this blog

MEGA 暫存檔案刪除

XAMPP 使用多PORT來執行不同網頁

IOS GCD多執行緒