要解釋 Interface 最好的方式就是把它看作一個契約。

對於我想要構築的功能。

 

假設我們建構了一個"Chair"物件,有一些必須存在的條件,

例如:有支撐腳,有坐墊,椅子高度,坐墊面積。

還有一些我們想要增加的功能,例如:

靠背,扶手,按摩,洗腳...。

 

通常我們會這樣建構我們的 Chair Class:

interface_01  

如果我們想要新增一些功能,舉例來說,按摩。按摩並不是每張椅子都有的功能,

在新增功能時,我們需要先定義好,如果這張椅子是一張按摩椅,

那這按摩功能有什麼條件?

 

大致上有:震動、定時、躺下。

一定要具備這三個條件,我們才可以稱之為"按摩椅"。

這是我們訂好的契約。至於震動的方式、定時器設定、躺下的方式,

就看各製造者的需求去將他實現。

 

為了確保要每個製造者做出來的"按摩椅"都有以上功能,

我們就會需要這張"功能契約"-- Interface。例如:

interface_02  

通常 Interface 會以 I 開頭命名,而且裡面的 method 不需要 body,

接下來我們可以根據這份功能契約來製造按摩椅:

interface_03  

interface_04  

所以,我們可以跟各個製造者說定,要怎樣的功能才叫做按摩椅,

這樣就可以確保每個製造者都做出正確的按摩椅了!

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 keep walking 的頭像
    keep walking

    Winner? Loser? No matter

    keep walking 發表在 痞客邦 留言(0) 人氣()