要解釋 Interface 最好的方式就是把它看作一個契約。
對於我想要構築的功能。
假設我們建構了一個"Chair"物件,有一些必須存在的條件,
例如:有支撐腳,有坐墊,椅子高度,坐墊面積。
還有一些我們想要增加的功能,例如:
靠背,扶手,按摩,洗腳...。
通常我們會這樣建構我們的 Chair Class:
如果我們想要新增一些功能,舉例來說,按摩。按摩並不是每張椅子都有的功能,
在新增功能時,我們需要先定義好,如果這張椅子是一張按摩椅,
那這按摩功能有什麼條件?
大致上有:震動、定時、躺下。
一定要具備這三個條件,我們才可以稱之為"按摩椅"。
這是我們訂好的契約。至於震動的方式、定時器設定、躺下的方式,
就看各製造者的需求去將他實現。
為了確保要每個製造者做出來的"按摩椅"都有以上功能,
我們就會需要這張"功能契約"-- Interface。例如:
通常 Interface 會以 I 開頭命名,而且裡面的 method 不需要 body,
接下來我們可以根據這份功能契約來製造按摩椅:
所以,我們可以跟各個製造者說定,要怎樣的功能才叫做按摩椅,
這樣就可以確保每個製造者都做出正確的按摩椅了!
全站熱搜