Re: [問題] Ruby 與 Interface Oriented Design
※ 引述《fayhong (風起的瞬間)》之銘言:
: 我們在寫 Java 的時候,有種東西叫 interface,
: C++ 與 Objective-C 也有,但是作用跟 Java 好像又不太一樣
: 在 Java 中,我們可以定義 interface,藉以告訴實作的人要做哪些功能,
: 甚至在 Test Driven 的實作過程中,只需要先定義好 interface,
: 就可以動手寫 unit test 的東西
: 只不過,在 Ruby 中,要怎麼做這種"空殼"呢?
: 或者是,有什麼樣的設計方法可以取代我原本的想法呢 @@a
一點淺見 請指教
在ruby裡, interface的觀念應該直接用duck typing的觀念實作
==別挑我語法錯, 下面都是pesudo code==
例: Java
interface Animal {
public void move();
}
class Dog implements Animal{
public void move() { System.out.println("小狗趴趴走"); }
class Bird implements Animal {
public void move() { System.out.println("笨鳥慢慢飛"); }
Ruby:
class Dog
def move, puts "Dogs walk"; end; end
class Bird
def move, puts "Birds fly"; end; end
interface呢....以上我講完等於沒講一樣
所以老師說 ruby一定要寫test case (丟筆)
(其實是這句書上說的....)
在test case裡確認你認為每個是animal的class, 都implement了animal該有的method
這樣做等於你把interface定義在test case裡, 修改程式後記得跑test確認他是對的
class TC_Bird < Test::Unit::TestCase
test_acts_as_animal(Bird)
end
module AnimalTestHelper
def test_acts_as_animal(the_class)
obj = the_class.new
obj.move
end
end
class Test::Unit::TestCase, include AnimalTestHelper; end
類似這樣吧 @@
一點小想法 請用力鞭
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.88.16
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章