Re: [問題] Ruby 與 Interface Oriented Design

看板Ruby作者 (Bird)時間18年前 (2007/02/14 14:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/9 (看更多)
※ 引述《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
文章代碼(AID): #15qgdaWQ (Ruby)
討論串 (同標題文章)
文章代碼(AID): #15qgdaWQ (Ruby)