Re: [概念] 中介者模式的疑問

看板OOAD作者 (!H45)時間12年前 (2012/02/20 23:31), 編輯推噓4(407)
留言11則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《tyc5116 (累人啊....)》之銘言: : 如題,這是我看書想到的一個問題 : 我拿書上的題目來說,有四個class,分別是採購(Purchase),庫存(Stock),銷售(Sale) : 以及一個中介者(Mediator)(不把虛擬的算進去的話) : 彼此是有關聯性的,哪一天突然發現有bug,或想重構,或要修改功能,該怎麼下手呢? : 我的問題點在於,以debug來說,假設我覺得Sale部份可能有問題 : 有辦法在過程中,先將Sale和其它class的關聯性切開,再除錯嗎? : 又或者哪天我覺得Mediator很亂了,要進行重構,可是有關聯性的class很多 : 有辦法將Stock和Purchase切開,對Mediator與Sale相關的程式碼重構 : 再依此類推,連接Sale,切開Stock,Purchase,重構 : 連接Purchase,切開Sale,Stock,重構..... : 若這個觀念是不對的,麻煩請指正,若這觀念可行,麻煩請說明一下實作的方向 : 謝謝 詳細完整的回答請看上一篇qrtt1的文章,我這篇只是應著推文簡單回覆一下 如有誤還請各位先進指教。 以您原文的需求來看,問題點似乎是如何針對已經做好Mediator Pattern的類別Debug 以我目前的作法是: 1. 先寫 Unit Test Case,測試 Mediator、Purchase、Stock、Sale 四個實體類別 2. 當 Test Unit 報告有 Assertion Fail 的時候 2.1 使用好的 Debugger 一步一步追蹤除錯 2.2 使用好的 Logger 傾印所有變數在執行期的變化 3. 發現發生錯誤的程式碼之後,修正他,回到 2 直到全測試通過為止。 所以您說,『有辦法在過程中,先將Sale和其它class的關聯性切開,再除錯嗎?』 除非您找得到 Sale 和 Mediator 兩者沒有關聯的部分做獨立測試與除錯,否則切開是 沒有意義的,因為 Sale 的運作是否正確,和 Mediator 有很強的關聯性,所以說,整 個除錯的過程必須包含 Sale 與 Mediator 兩者有相關的部分,無法完全切開。 後面你說能不能將 Stock 和 Purchase 切開也是一樣的道理:只能針對無關聯的部分做 測試除錯,其他有關聯部分仍然不可切開。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.174.134

02/21 19:16, , 1F
藉這篇問一個離題的問題一下,好的Debugger & logger
02/21 19:16, 1F

02/21 19:16, , 2F
可以舉個例子嗎? 是指tool本身還是實作的方式?
02/21 19:16, 2F

02/21 19:28, , 3F
對對對,我所指的切開就是指以Test Case取代
02/21 19:28, 3F

02/21 19:29, , 4F
但是對這部份的實作沒什麼概念,有推薦的書嗎?
02/21 19:29, 4F

02/21 21:33, , 6F
回一樓:我用的Debugger是Eclipse,很好用,但我不敢
02/21 21:33, 6F

02/21 21:35, , 7F
說是最好的,而logger則是指 library,總之不是指實
02/21 21:35, 7F

02/21 21:35, , 8F
作的方式
02/21 21:35, 8F

02/21 21:37, , 9F
回四樓,推薦的書就參考下專業五樓的吧 :)
02/21 21:37, 9F

02/21 22:12, , 10F
有沒有中文的啊XD,英文的雖然寫比較好,但是貴啊....
02/21 22:12, 10F

02/22 09:23, , 11F
多謝H45回答:D
02/22 09:23, 11F
文章代碼(AID): #1FGcTUxR (OOAD)
文章代碼(AID): #1FGcTUxR (OOAD)