由于在平时开发项目过程当中,由于项目工期紧、需求变化频繁等等缘由,而后致使代码混乱、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;
}
}
复制代码
根据上面的代码,咱们只须要自行实现监听器,而后就能够完成建立订单后的业务操做。这样就达到了一个解耦的效果。会不会更好?