OOAD 板


LINE

最近因為在上一門程式設計的課, 有個期中專案報告, 加上很想學好OO設計, 所以很認真寫了個"簡易計算機"小專案, 希望請大家幫忙code review, 評論指教~ http://code.google.com/p/calculator-midterm-report/ ==== 簡易計算機(Calculator V0.61 r8)架構說明 ==== package calculator.ui 主視窗CalculatorFrame中有InputsField及AnswerField, 分別用來放置使用者輸入的算式及顯示計算結果, 另外也有一堆運算按鈕: 分為運算元, 運算子, 等號, Clear, Backspace, Null等6種 針對不同按鈕依其種類建立對應的CalButtonListener, 以CalCommand當參數, 將計算的任務委派給CalCommand package calculator.model CalCommand為abstract類別, 用來執行計算命令, 目前有以下子類別(對應6種按鈕): OperandCommand, OperatorCommand, DoCalculationCommand, ClearCommand, BackSpaceCommand, NullCommand CalButtonListener會執行CalCommand中的execute()來計算結果, 並notifyObservers() 通知 InputsField/AnswerField 更新畫面 (Observer Pattern, 讓model不用相依於swing的東西) ===== 問題 ===== 1. CalButtonListener把計算的行為指派給不同CalCommand去執行, 這樣應該算有用到Strategy Pattern? 還是根本就四不像,我自己亂套沒套好? 若沒套好可否給個建議? (我一開始之所以取名為CalCommand, 是想要套用Command Pattern, 但後來看head first DP中畫的類別圖, 又覺得比較像Strategy) 2. 接下來我還想在model的部分增加一個Interface如下: (因為看到Head First DP 介紹到了MVC架構) public interface CalculationModel { public void doOperand(String btnName, String newInputs); public void doOperator(String btnName, String newInputs); public void doCalculation(String newInputs); public void doBackSpace(String newInputs); public void doClear(); public void doNull(); // do nothing } 然後可能再做個類別(如: SimpleCalculationModel)去實作這個Interface 問題2.1: 那我原本的CalCommand架構要全部砍掉嗎= =? (改為計算邏輯都寫在SimpleCalculationModel就好) 還是在Model中建立這6種CalCommand, 將任務指派給它們比較好? (感覺又變更複雜了) 問題2.2: 這樣做真的會比較好嗎? 我想到的好處: CalculatorFrame中不用建構一堆CalCommand, 只要一個Model就好了, 架構也比較簡單直覺的樣子 我想到的壞處: 原本針對CalCommand有用到Strategy, 現在沒有了, CalButtonListener中可能要用switch case來處理, 或實作6種不同的CalButtonListener類別來執行對應的工作 3. 有必要再加上Controller(Model, View, Controller)嗎? 總覺得View相依於Controller和直接相依於Model沒什麼不同..., 還要多一層指派好像有點多餘 (就View有個controller能做事, 然後controller也只是利用Model真的去執行) 之後若要增加其它的View, 總覺得不用controller也行(Model不用修改就能重用) 在Head First DP compound patterns中介紹的DJ View範例MVC中, controller 是還有控制View的東西, 另外Model的使用上多了一些變化 4. 其它建議? (例如是否Over-Design了) 我是假設未來還想做不同的View(jsp/servlet, App, ...等), 及Model可能異動, 或改成分散式服務等~ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.74.115.136
1F:推 plover :用log4j寫log。先平鋪直敘的寫,切View-Model-Ctrl 12/06 01:31
2F:→ plover :Model都不Model哩 12/06 01:31







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燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP