剛進(jìn)公司,參加了兩個(gè)項(xiàng)目一個(gè)是日本外包,一個(gè)是自己的產(chǎn)品。這個(gè)兩個(gè)系統(tǒng)在設(shè)計(jì)上都有一個(gè)要求,就是業(yè)務(wù)邏輯要放到Service層來(lái)完成,Action中盡量少寫(xiě)東西。這一點(diǎn)可以理解,但是存在這樣一個(gè)問(wèn)題,在service中進(jìn)行業(yè)務(wù)邏輯處理時(shí)免不了要發(fā)生問(wèn)題,要把這些問(wèn)題顯示在頁(yè)面上,但是service層不能直接接觸到action,所以著這兩個(gè)項(xiàng)目中的設(shè)計(jì)方法上使吧actionmessages對(duì)象給了service。我認(rèn)為這樣做很不好,這樣service對(duì)表現(xiàn)曾的依賴(lài)就太大了,因?yàn)锳ctionMessages是Struts的東西,也就是說(shuō)這個(gè)serivce只能用來(lái)對(duì)Struts提供服務(wù)了。我認(rèn)為應(yīng)該在service曾定義好異常情況,遇到問(wèn)題時(shí)拋出異常(RuntimeException),然后再表現(xiàn)層根據(jù)異常種類(lèi)做出相應(yīng)的動(dòng)作。這樣就是view層依賴(lài)于serivce層,而service層可以為更多種view層提供服務(wù)了。但是這樣也有一些問(wèn)題,就是如果serivce邏輯復(fù)雜,可能異常種類(lèi)就非常多,這樣項(xiàng)目做起來(lái)也很麻煩。 但是剛進(jìn)公司也沒(méi)有什么發(fā)言權(quán),估計(jì)前輩們也知道這樣做不好,但是估計(jì)是為了項(xiàng)目做起來(lái)不會(huì)太麻煩吧。
大家有沒(méi)有更好的辦法?