由於在平時開發項目過程當中,由於項目工期緊、需求變化頻繁等等緣由,而後致使代碼混亂、service臃腫,最後致使維護成本高維護人員怨聲載道,最壞結果可能須要重構。面試
開發以前建模spring
寫代碼以前最好建模,把整個業務流程清晰在圖形當中展現,以便本身加深對業務的理解同時對整個業務代碼的掌控。設計模式
合理的歸類bash
爲何須要合理的歸類,大多數咱們都只開發entity,dao,service,controller等四層,那麼這樣會隨着項目不斷的迭代致使類太臃腫。app
那麼咱們就須要在這四層的基礎上再豐富一些。工具
例如:學習
1.加入job任務包ui
2.加入utils工具類包spa
3.加入handler處理器設計
以上歸類只是給你們提供一點思路,具體業務場景還需分析。其實這些在一些優秀的開源項目當中都有體現。你們只須要看看學習理解,而後照搬過來便可。這也是爲何須要看源碼的緣由,我的以爲看源碼不牢牢是熟悉整個執行過程有助於排查問題過程。更重要的是學習裏面的設計思路。
合理的引入一些設計模式
設計模式是老生常談的話題了,面試當中也會問。那麼問題來了在何時引入設計模式呢?
舉個例子:
假設咱們在開發一個訂單功能,此時須要建立一個訂單,建立好訂單後須要給用戶發送短信啊一系列操做。
常規開發可能就是在一個方法裏面或者在一個service裏面拆幾個小方法搞定了。
其實在這個場景我推薦你們使用事件機制也就是觀察者模式去實現,爲何?自己客戶端是發起建立訂單的操做,發送短信的等操做其實在這個時候和訂單不要緊,是在產生訂單後的操做。若是你們有用spring,那麼能夠借用spring已經實現的來實現。
@Service
public class PaymentOrderServiceImpl implements PaymentOrderService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public PaymentOrder createOrder(PaymentOrder paymentOrder){
//完成建立訂單後發起事件
applicationEventPublisher.publishEvent(new PaymentOrderEvent(paymentOrder));
return paymentOrder;
}
}
複製代碼
根據上面的代碼,咱們只須要自行實現監聽器,而後就能夠完成建立訂單後的業務操做。這樣就達到了一個解耦的效果。會不會更好?