Re: [問題] Ruby 與 Interface Oriented Design
※ 引述《fayhong (風起的瞬間)》之銘言:
: 我們在寫 Java 的時候,有種東西叫 interface,
: C++ 與 Objective-C 也有,但是作用跟 Java 好像又不太一樣
: 在 Java 中,我們可以定義 interface,藉以告訴實作的人要做哪些功能,
: 甚至在 Test Driven 的實作過程中,只需要先定義好 interface,
: 就可以動手寫 unit test 的東西
: 只不過,在 Ruby 中,要怎麼做這種"空殼"呢?
: 或者是,有什麼樣的設計方法可以取代我原本的想法呢 @@a
先旨聲明我只是 Ruby 的初學者 (在公司用了
兩天的偷懶時間來看 tutorial :P )
首先你要說出你所謂的 interface-oriented
要的是什麼.
簡單來說, interface oriented programming
要達到的只是: 你只是面對著一個 interface 來工作,
你只要用這個介面上的東西就好, 實際的 impl
是怎樣的你是不用理會的.
所以單純為了達到這個效果, 你只要和 "使用者"
協議好中間的 interface 就可以了.
Duck typing 已經足夠達到這個效果有餘. API provider
定義好 interface 是什麼 (i.e. 有什麼 method,
還有 method signature), 然後 API user就使用
這 interface, 這樣其實就是 interface oriented
programming.
但如果你想要的是 compile time checking, 那麼
我就幫不上忙了 :P 以我所知, 由於 Ruby 是
Ducking type, 只有到真正跑時才能知道某 object
有沒有支援某 'interface', 你最多只能在運作
是用 respond_to 在 runtime 檢查. 這和 Java
(or C++ or C# etc) 在 compile time 已經能
"確定" interface 的支援很不同. 但這種又是 strongly-
typed language 的特徵, 要套在 Ruby 用又好像不太合適.
Alien
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.72.0.45
※ 編輯: adrianshum 來自: 202.72.0.45 (02/21 15:36)
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章