Re: [資料] 神之物件 (God object, Blob AntiPattern)

看板OOAD作者 (godfat 真常)時間17年前 (2007/08/06 13:38), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串4/19 (看更多)
※ 引述《H45 (!H45)》之銘言: : [舉例恕刪....老實說不太懂你要表達的意思....] 只是想表達自己喜歡這種用法而已 :3 : 話說回來,身為一個 constructor 應該做「什麼」事情? : 雖然沒有一定的原則,但是我總覺得 constructor 應該只負責「建立一個物件的屬性」 : 而不應該負責「進行一個物件的行為」 : 不是嗎? 我覺得這要看狀況,例如音效,是直接讀取時就撥放好呢,還是分開? var sound = new Sound("ouch.tta"); // 順便推廣 The True Audio XD sound.start(); 這個作法很合理且直覺,但是如果在你的程式裡,只有讀取時需要撥放, 而會使用音效的地方又非常地多: var sound_oops = new Sound("oops.tta"); sound_oops.start(); var sound_orz = new Sound("orz.tta"); sound_orz.start(); 這樣多起來是會打到很煩的。當然,以上是假設上下兩段在不同地方, 無法使用迴圈呼叫。當然,仍然可以向其他容器註冊,再同時撥放﹍ 但這又更麻煩了,也造成太多不必要的複雜度。 這種時候就乾脆讓 sound init 時就順便撥放。 這是假設是在寫 app 的情況下,如果是 lib 或 framework, 因為不能假設 client 的 domain 需要什麼,就不能任意將職責混合。 如果 client 有需要用混合的職責(可能這個 domain 只會有這種職責), 再自己寫 wrapper 把上述兩個職責合併即可。 如果未來有需要勒?再改回去啊 XD XP 不是這樣做嗎? :p 不要做多餘的假設。 -- 生死去来、棚頭傀儡、一線断時、落落磊磊 《花鏡》-世阿弥 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.90.242

08/06 14:31, , 1F
Why not new Sound("ouch.tta").start() ?
08/06 14:31, 1F

08/06 15:29, , 2F
not much different. and you have to make start return
08/06 15:29, 2F

08/06 15:30, , 3F
sound or you can't var sound = ...
08/06 15:30, 3F
文章代碼(AID): #16jhFPjC (OOAD)
討論串 (同標題文章)
文章代碼(AID): #16jhFPjC (OOAD)