你的問題的本質(zhì),是兩個(gè)“主語”(只是在你的案例中恰好都是service而已)的各自一個(gè)“行為”(do1和do2)含有了完全相同的一個(gè)“行動(dòng)效果”(修改p.s的值)。沖突不在于service,而在于行動(dòng)效果冗余。試想一下,換一個(gè)案例,其中只有一個(gè)主語,兩個(gè)行為(do1和do2)都是它的,那么問題也是等價(jià)的。兩個(gè)行為有重疊的行動(dòng)效果,實(shí)在太常見的了。關(guān)鍵在于,你怎樣界定,哪種重疊是滿足需求的?哪種是錯(cuò)誤、不合理的?舉一個(gè)滿足需求的例子:需求是:p是一個(gè)鼠標(biāo)懸停的tips(界面組件)。先根據(jù)鼠標(biāo)坐標(biāo),賦值p.top為一個(gè)值。隨后,計(jì)算tips是否超出了窗口邊緣。如果是,則計(jì)算tips的top的最大值(因?yàn)榇翱诖笮】赡軙?huì)被改變,所以需要計(jì)算),然后賦值p.top為該最大值。p.left同理。這是我做網(wǎng)頁前端開發(fā)時(shí)遇到過的需求。你的解決辦法,大概可以解決你的那一個(gè)具體案例,但換成別的情況可能就又不對癥了。在我看來,關(guān)鍵在于,一個(gè)行為的源頭(往往是事件)所導(dǎo)致一連串行動(dòng)效果,其中要避免出現(xiàn)重疊;除非需求要求必要的重疊。這“一連串”的“串法”,是設(shè)計(jì)上要想清楚的。你已經(jīng)在朝這個(gè)方向努力了,只是關(guān)注點(diǎn)稍有偏離。至于串的過程中的對象(主語/賓語)是不是service、是何種service,倒是沒有關(guān)系。