作者adrianshum (Alien)
看板java
标题Re: [问题] MVC程式架构
时间Mon Sep 2 00:02:54 2013
※ 引述《cyclone350 (老子我最神)》之铭言:
[43]
: 问题来了,我待过的每一个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 的必要,以及它们
: 真正存在的意义在哪里?
: 苦恼很久了
: 谢谢大家看完
先说一下,我个人是没啥 Web app 开发经验的,
以前做的 project 都只是 server side 的 application,
让 Rich client 经各类 protocol 连进来 (CORBA/SOAP/RestFul WS etc).
不过就算这类 application,还是常会看到你所说的问题。我自己对那
些模糊不清的 XXXManager/ XXXService 也是很感冒。
我自己的手段是稍为不一样。
详细有点难解说,建议你去找一下 Domain Driven Design 的资料。
简单来说,在 DDD 的世界,business logic 主要就存在於 Domain Layer
(通常来说就是 Entity),和平常你所见的单纯只当 Data object 的
Domain Entity (即是所谓 Anemic Model) 很不一样。
虽然在 DDD 中还是会常见所谓 Service,但一般来说只是 Application
Service,绝大部份的 business logic 还是会放在 Domain Layer。
当然,DDD 并不是所有类型的 application 都合用(比如主要是各类
Report 的 app 就不太合用了),不过还是建议你去看看,当是学习另
一种思维也好。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.19.45.228
1F:推 cyclone350:我理解没错的话,DDD就是swpoker所描述的!? 09/02 12:56
2F:→ Killercat:? DDD = Data Driven Design 09/02 16:31
3F:→ adrianshum:DDD = Domain Driven Design 09/02 21:10
4F:→ adrianshum:另,swpoker 该篇描述的并非DDD, 甚至可说相去甚远 09/02 21:11
5F:→ swpoker:我说的DFD是早期的开发方法论~我有写过COBOL喔 09/03 11:43
6F:→ adrianshum:我知道,我只是回应 cyclone说你所描述的并非DDD而已。 09/03 23:26
7F:→ adrianshum:我也有在 AS400 写过 RPG... 09/03 23:27