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

请输入看板名称,例如:WOW站内搜寻

TOP