作者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
推 cyclone350:我理解沒錯的話,DDD就是swpoker所描述的!? 09/02 12:56
→ Killercat:? DDD = Data Driven Design 09/02 16:31
→ adrianshum:DDD = Domain Driven Design 09/02 21:10
→ adrianshum:另,swpoker 該篇描述的並非DDD, 甚至可說相去甚遠 09/02 21:11
→ swpoker:我說的DFD是早期的開發方法論~我有寫過COBOL喔 09/03 11:43
→ adrianshum:我知道,我只是回應 cyclone說你所描述的並非DDD而已。 09/03 23:26
→ adrianshum:我也有在 AS400 寫過 RPG... 09/03 23:27