第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mvc架構(gòu)中如何減少service之間的耦合?關(guān)聯(lián)查詢歸屬于哪個model?求指導(dǎo)!

mvc架構(gòu)中如何減少service之間的耦合?關(guān)聯(lián)查詢歸屬于哪個model?求指導(dǎo)!

慕村225694 2019-09-09 19:52:59
我們項目用的是傳統(tǒng)的mvc框架(CI框架),為了更好的復(fù)用業(yè)務(wù)邏輯,我們新增了services邏輯層,在開發(fā)過程中代碼復(fù)用性確實好了很多,但也遇到了問題:最明顯的就是service之間的互相調(diào)用,我感覺這增加了service之間的耦合性。本來最開始想按照業(yè)務(wù)邏輯分模塊劃分不同的service,每個service只提供自己業(yè)務(wù)相關(guān)的方法,由controller層分別去調(diào)用不同的service層方法得到數(shù)據(jù),然后組裝成最終想要的數(shù)據(jù)輸送給view層。但是遇到個這個問題,我需要提供一個方法給同事調(diào)用,這個方法要求會做很多業(yè)務(wù)邏輯處理,這會涉及到多個service,這個方法如果寫在controller層,同事就無法在它的controller中使用,寫在controller的父類中感覺這個方法僅僅是他的控制器能用到,于是最終我寫在了一個service中,這個方法會分別去調(diào)用不同的service,然后組裝并輸出數(shù)據(jù),這樣就產(chǎn)生了耦合。。不知道有沒有更好的解決方案,特別是在實際的開發(fā)過程中?然后就是model層的一些問題:我們原則上是一個數(shù)據(jù)表對應(yīng)一個model,每個model只負(fù)責(zé)對應(yīng)數(shù)據(jù)表的增刪改查,由service層按照業(yè)務(wù)邏輯去調(diào)用不同的model獲得數(shù)據(jù),我們項目中很少有關(guān)聯(lián)查詢,這既有好處,也有壞處。有時關(guān)聯(lián)查詢更方便,但是這個查詢方法寫在哪個model里呢?放在哪個model的原則又是什么呢?最后,跨層調(diào)用不知道是否合理,有時controller層會直接調(diào)用model層。十分感謝。
查看完整描述

2 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊

mvc里面的model是指提交給jsp或者其他模板引擎,用于渲染的數(shù)據(jù),是加工過的方便界面顯示的數(shù)據(jù),而數(shù)據(jù)庫表的數(shù)據(jù)是原始的數(shù)據(jù)。所以model應(yīng)該不直接對應(yīng)數(shù)據(jù)庫表。
一般來說不需要model層,model只是存放數(shù)據(jù)的對象,一般是ORM里面的bean,增刪查改的邏輯由service層調(diào)用ORM實現(xiàn)。關(guān)聯(lián)查選也由service層調(diào)用ORM實現(xiàn)。model只是一些實體類,pojo對象,不是一個包含業(yè)務(wù)邏輯代碼的層。
service層可以互相調(diào)用,但雙向調(diào)用很不好,改造為單向調(diào)用比如serviceA調(diào)用serviceB,那么serviceB就不要調(diào)用serviceA。controller層的職責(zé)就是組合service層的功能,由controller來調(diào)用service組裝是最好的。
                            
查看完整回答
反對 回復(fù) 2019-09-09
  • 2 回答
  • 0 關(guān)注
  • 394 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號