學 java 時,學到 interface
這東西取代了 C 的函式指標
同事在用了後覺得不錯
反而在 C++,再也不用函式指標了
大量的使用 interface
說真的一開始給我帶來很大的門檻
但等我也學 Java,被逼著學會後
的確覺得這樣的架構還挺美妙的~
怎麼說呢...
嗯,我一次用一整組函式指標組成的 interface
而不是一個一個指標去註冊
這樣在多個函式具有一種架構時,更可以看出它們的關係
VC 的 interface 其實就和 class 一樣
只是 RD 要有自律,不要在 base class 去 implement 裏面的函式
保留起來做純虛擬 class, 那就是 interface 了
VC 支援多重繼承, Java 不支援;但 Java 可以"繼承" interface
在我看來就是這樣,所以 繼承 兩字我要打引號
也許有人會說是 implement 吧..
到了 Object C, 看到 protocol
看來看去它就和 java 的 interface 一樣嘛
(如果要說不一樣,那我就學不會它了)
可是它的檢查好鬆喔..
1.我宣告我的 class 使用某 protocol
然後不實作它
Compile OK!!
2.我不宣告我的 class 使用某 protocol,但我實作它
然後在某個要求傳入實作 protocol 物件的場合,把我這個 class 物件傳進去
Compile 也 OK!!
Holy 謝~
你給我這樣在 C++ or Java 玩玩看
Compiler 一定不會饒過你的
結果 Object C 把這輕輕放下了
至此,我只好這樣去理解了:
protocol, 是提高可讀性而已啊,讓你知道 "這裏有個規矩可以遵守"
其實你就把它當個 base class 看就好
你要不要在你的 class 裏,打個 < > 符號,把 protocol 寫在裏面宣告
宣告後要不要實作
都隨便你了啊~~