java 板


LINE

大家好,因为这几年遇过几个web专案,有几个问题想起教大家 当然,我知道什麽是MVC,我也会用spring,也可能是我只懂皮毛,所以才会有以下问题 我会先分析专案所使用的程式架构,并尝试说明使用每个元件(如Dao)的原因 最後问一些问题,当中如果有错请指正,谢谢 首先资料是存在Database或是档案里面,为了方便(或是抽象),我们将结构化 的资料一对一对称到Java Bean,通常被称为是Entity,例如 资料库栏位跟值如下 id | name | age | ---------------------------- 5566 | google | 10 | ---------------------------- 会对应到以下Java Bean public class Tablex { public int id; public String google; public int age; } 为了简化资料存取的逻辑,通常一个Entity会对应一个Dao class 例如要select资料只需要下列语法大概就能使用 tablexDao.selectByPK(5566); 再来是 MVC,优点不赘述 首先 view 一定是 JSP controller 是一般的 Java class model 是 view 跟 controller 来互传的 Java Bean 以 Struts2 来举例好了,Controller 是 Action class, 也就是说在Action 我们必须做一连串的动作来完成事情, 举一个例子,我要从tablex检查特定id资料有无资料 Action 可以写成如下: public class testPageAction { TablexDao tablexDao; testPageFormBean formBean; ... ... ... //假设Dao跟FormBean都设定完传好值开始跑 public void run() { int pk = formBean.getId(); Collection resultSet = TablexDao.selectByPK(pk); if (resultSet.isEmpty()) { Page.forward("fail"); } else { Page.forward("success"); } } ... ... ... } 对我而言,Action class 只是一个 workflow, 一连串的行为都必须到对应的Action 完成,当然为了 clean code 我们可以 设定一些 private method 来避免程式码重复等问题 有人可能会多写一个Function,例如 private boolean doSomething(int id) { ... ... return false; } 然後再 run 里面呼叫 public void run() { ... ... x = doSomething(4); y = doSomething2(1,x); if(x || y) Page.forward("success"); Page.forward("fail"); } 以上,是我所认识的 MVC 架构 问题来了,我待过的每一个Web专案理,都会在Action 跟 Dao 中间夹带一层 Service 或是 manager... 而规定几乎是 "一个Action对应一个manager" 而 manager 所做的事,就像是把Action 的 private method 移到 manager 变成 public method ... 我完全找不到理由可以说明为啥要特地开一个 manager, manager的工作事项模糊不清 一个写在 manager 的 public method 完全可以改到自身 Action class 的 private method 而实际情况是,在写method时,有些程式设计师会写到 Action ,有些会写到 Manager 这完全没有意义,假设有 10 个 method,两位程式设计师可能写完全不一样 例如 程式设计师A: 1,2,4,5,6 写到 Action, 3,7,8,9,10写到 Manager 程式设计师B: 2,6,7,5,8,10 写到Action, 1,3,4,9写到 Manager 我所遇到的专案就是如此,有没有人能够解释 Service 或 Manager 的必要,以及它们 真正存在的意义在哪里? 苦恼很久了 谢谢大家看完 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.205.223
1F:推 popcorny:看完之後觉得MVC大方向没错,只是C怎麽写而已 09/02 08:12
2F:推 if4:楼上已经变成板标了... ^_^ 09/02 13:37
3F:→ swpoker:对喔~超好笑的啦~应该要水桶阿~这里是JAVA版不是C版~XDDDD 09/02 13:48
4F:推 popcorny:XDDD 我自己去水桶里面等... 09/02 13:53
5F:推 swpoker:我是dfd,不是ddd拉 09/02 18:29
6F:推 jtorngl:以前的经验,Service或Manager会做transaction control 09/03 02:59
7F:→ jej:推楼上.. 那是和那个案子的架构的transaction控制有关... 09/03 12:29
8F:→ jej:你可以把transaction都改成手动控制..然後在干掉这层XDD 09/03 12:31
9F:推 MagicPaul:我怎麽记得是多个Action对应一个manager,magnager在web 09/03 16:40
10F:→ MagicPaul:专案中只会有一个,所有的Action都会去问Manager 09/03 16:42







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

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

TOP