CSSE 板


LINE

: : 推 YuYuHo:vistor visit house,我覺得vistor最大的缺點 02/10 16:18 : : → YuYuHo:是帶給house太大的負擔 02/10 16:21 : : → YuYuHo:打錯字了,是visitor,剛打完麻將回來,win~~ya~~ 02/10 22:52 : : → YuYuHo:假如說house的內部節點其實是不穩定的型態,結果會造成 02/10 22:54 : : → YuYuHo:visitor的介面也變得很不穩定,很容易就搞得一團亂 02/10 22:55 : : → YuYuHo:通常採用visitor時,house本身的結構可能就很複雜了, 02/10 22:57 : : → YuYuHo:這時候還要管理節點的分派策略,還要維持節點穩定, 02/10 23:01 : : → YuYuHo:這表示house做好後就不能隨便更動,很容易牽一髮動全身. 02/10 23:02 : 請問不穩定的型態是什麼意義 : 是指需求改變?還是設計的失誤? : 為什麼house做好後就不能更動,這和visitor有什麼直接的關係呢 : 如果不採用visitor的話,那麼原本要加在繼承樹上面的功能又該怎麼處理? : 牽一髮動全身我同意 : 但是使用visitor pattern之後 : 動到的「全身」應該會比不用visitor pattern來得少吧? : 抱歉,我實在是不懂YuYuHo的這段推文 : 照他的說法,visitor pattern看似限制住了house擴充或修改的彈性 : 但是我不這麼認為.... : 不採用visitor的話,當初用visitor在繼承樹上面加入的功能又該怎麼辦? : 還有什麼更好的主意嗎? 抱歉ㄚ~其實我都是在胡扯,被大大發現了.(都是因為打麻將的關係) 請容許我再胡扯一下. 首先先把場景定義清楚. 在場景中有房子(house),房間(room),與訪客(visitor). room就是內部節點,house是節點管理員,visitor就是節點操作者. house擁有很多型態不一的room,並且接受visitor的來訪. 在一個房子之中有很多種房間,有客廳,臥室,浴室,廚房,等等... 來訪者也有很多種,有女傭,女朋友,廚師,水電工,等等... 如果房間髒了,就打電話請女傭來打掃,肚子餓了,就請廚師來煮飯, 水管漏水,就請水電工來修理,想睡覺的時候...就去睡覺. 這樣說起來好像還滿合理的,這就是我最初的設計想法. house,room,visitor三者的認知關係. room與visitor是互相認識的. house則同時認識room與visitor. 女傭掌管客廳,廚師掌管廚房,水電工掌管浴室. 我當初覺得,既然room與visitor是一對一的映射關係(在種類上). 為什麼不乾脆把分派的事交給house來作就好了. 這樣還可以讓不相干的room與visitor各自獨立. 於是當女傭來的時候,我就直接把客廳丟給她, 廚師來的時候,就直接把廚房丟給他,水電工來的時候,就直接把浴室丟給他 這樣似乎也還算合理ㄅ. 在我實際實作的情況中,room這個角色是經常更動的, 廚房仍舊是廚房,可是三不五時就會新增方法, 每增加一次我就要再實作一個visitor,太麻煩了. 於是我又用了一個大絕招,我把方法呼叫改成需求命令, 就是說用事件訊息傳遞的方式來操控物件, 於是room只需要有一個方法. 虛擬碼: result room::HandleWhat( command cmd ) = 0; 一但把這個變動因子抽出來後,我發現room與visitor可以完全抽象化. 我甚至可以把能力動態附加到visitor身上,讓女傭會修水管. 情況越來越抽象,我開始飄到大氣層了. 最後我發現一個事實是,room是一個複雜物件,house也是一個複雜物件, 事實上除了house之外,沒有人知道如何管理room與visitor. 所以所有的visitor都會在house的私有層被實作. 我還把操作方法抽成命令需求,變成一堆不易理解command物件. 複雜度太高了,載入大腦要耗費太多的查克拉. 我真的上天堂了. 最後我了解到,我做的一切都是在畫蛇添足. 在我完成程式,並且穩定的運作後. 我看著我寫的程式碼,不經要讚嘆,哇~這是哪個天才寫的呀! 這真是太玄了!一般人大概寫不出如此深遂又富有詩意的偉大程式吧! 在我對我的程式讚嘆不已後,我決定還是回到地球比較好. 我知道錯了. 以上純屬虎爛,如有虛構,既不負責.感恩ㄚ~ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.113.133.56
1F:→ godfat:雖然注音不多,但看了還是不舒服 02/12 14:37
2F:推 ephesians:...... 只贊成倒數三句以下內容 02/12 16:52







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP