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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Yii2框架中,有必要再分離service層么?

Yii2框架中,有必要再分離service層么?

Yii
慕蓋茨4494581 2018-08-09 10:00:46
目前的項(xiàng)目中,service層,就是使用靜態(tài)方法調(diào)用,方法內(nèi)再實(shí)例化ar model而Yii2自動(dòng)生成的模板中,是直接在model中使用ar model。兩者沒(méi)有多大的區(qū)別,那分離出service層的意義是什么?
查看完整描述

2 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

取決于model層是否夠亂。

該不該分離出新的層,有無(wú)service層都有各自的好處,沒(méi)有優(yōu)劣。

亂了才拆,不亂不管,就看合適不合適

如果真的很亂,非拆分不可,想必題主也不會(huì)再提問(wèn),所以推測(cè)現(xiàn)在是剛開(kāi)始亂。

如果真是這樣,其實(shí)這就是開(kāi)始了,推薦現(xiàn)在就拆。


查看完整回答
反對(duì) 回復(fù) 2018-08-12
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

在簡(jiǎn)單的系統(tǒng)里面,分層是這樣的

controller <-> model <-> storage(sql、nosql、cache)

所有的業(yè)務(wù)邏輯都在model上

現(xiàn)在討論一個(gè)常見(jiàn)的場(chǎng)景,用戶下訂單要買(mǎi)點(diǎn)東西,這個(gè)業(yè)務(wù)邏輯涉及到的model類有User(用戶)、Order(訂單)、Goods(商品)

那么下訂單這個(gè)事情是放到User還是Order上?無(wú)論放在User還是Order上,這個(gè)業(yè)務(wù)邏輯都需要多個(gè)model類的參與

這種需求在系統(tǒng)里面越來(lái)越多,你就會(huì)發(fā)現(xiàn)你總有那么幾個(gè)model在不斷的膨脹,這些model之間甚至產(chǎn)生了網(wǎng)狀的相互依賴關(guān)系

需求越復(fù)雜,你越容易陷入這種混亂的局面

service層的作用就是把這些需要多個(gè)model參與的復(fù)雜業(yè)務(wù)邏輯單獨(dú)封裝出來(lái),這些model之間不再發(fā)生直接的依賴,而是在service層內(nèi)協(xié)同完成邏輯

service層的第一個(gè)目的其實(shí)就是對(duì)model層進(jìn)行解耦

業(yè)界對(duì)前面提到的那種不斷膨脹的model稱為“充血模型”,起初對(duì)充血模型進(jìn)行反思的一種解決方案就是“貧血模型”,model里面盡量少放點(diǎn)邏輯,把這些邏輯都移動(dòng)到controller層面去處理,在controller里面調(diào)用多個(gè)model完成業(yè)務(wù)邏輯,也達(dá)到了對(duì)model間解耦的作用

但問(wèn)題就是,業(yè)務(wù)邏輯都放到controller層面了,如果其它的controller也需要相同的業(yè)務(wù)邏輯時(shí),只能在controller里面調(diào)用其它的controller,這樣做既不方便又麻煩

所以后來(lái)還是把這種解耦單獨(dú)放一層,叫service,現(xiàn)在分層就變成這樣

controller <-> service <-> model <-> storage

service層的第二個(gè)作用就是重用

差不多就是這樣

簡(jiǎn)單粗暴的總結(jié)來(lái)說(shuō),如果你的某個(gè)業(yè)務(wù)邏輯,需要用到多個(gè)model,就放到service層里面去,如果只是這個(gè)model自己的事,跟其它的model沒(méi)有任何關(guān)系,就放到model里面就好。

如果你的系統(tǒng)本來(lái)就很小,業(yè)務(wù)邏輯也超級(jí)簡(jiǎn)單,也不存在長(zhǎng)期演進(jìn)迭代的需求,隨你怎么高興怎么寫(xiě)都行。


查看完整回答
反對(duì) 回復(fù) 2018-08-12
  • 2 回答
  • 0 關(guān)注
  • 1196 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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