作者jackace (inevitable......)
看板Ruby
标题Re: [问题] 一个MVC pattern和composite pattern的 …
时间Fri Oct 12 14:03:05 2007
※ 引述《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