Re: [問題] 一個MVC pattern和composite pattern的 …

看板Ruby作者 (inevitable......)時間17年前 (2007/10/12 14:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《godfat (godfat 真常)》之銘言: : ※ 引述《jackace》之銘言: : : 假如我的model中用到composite pattern 例如 : : A <---- B : : A <---- C : 我看不出來這跟 composite pattern 有什麼關係? : composite pattern 是指自己包含自己喔... : 如 : class Thing; end : class Container < Thing; end : 然後 Container 裡只能放 Thing, 而 Container 本身也是 Thing, : 所以 Container 裡可以放 Container. : (不過在 dock typing 下,談這個意義似乎沒有很大) : 你的圖例看起來只是簡單的繼承而已 : : 那麼在view中 如果要在遇到A,B,C時 在畫面上畫出不同的圖形 : : 有辦法規避掉 : : if(p instanceof A){ : : ..... : : }else if(p instanceof B){ : : ..... : : }else if(p instanceof C){ : : ..... : : } : : 這樣的寫法嗎? : 我不知道你為什麼會碰到這個問題,可能要把情形講得更清楚? : 但如果只是單純有 is_a? switch 的問題, : 可以考慮用註冊的,如註冊到 hash 中。 : 如果是有雙重以上的 dynamic binding 問題, : 請洽 multi-method. : p.s. 你是在寫 Ruby 嗎?看起來不像?比較像 Java 啊... 抱歉喔 我可能沒敘述的很好 我是用ruby沒錯... 我的結構是這樣: class Content end class Section < Content def initialize(title) @items = Array.new @title = title end end class Text < Content def initialize(text) @text=text end end 那個Section.items放的是任何的Content 所以可以是Section或Text 這樣應該就是composite pattern....吧??? 我剛學DP不太確定是不是這樣叫 那我在View 裡面要從最頂層的Section開始往下traverse 比如說遇到Section的時候要用粗體把Section的title印出來 遇到Text的時候要印text 那要怎麼避免if(instance_of?)的寫法?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.179.244
文章代碼(AID): #173muQs2 (Ruby)
文章代碼(AID): #173muQs2 (Ruby)