在一个完整的业务流程中,业务层对数据层的调用应该集中在一点。
较混乱的调用关系(图):
较混乱的调用关系(代码):
public class ACtrl{ public ADTO actionA(){ ADAO db = new ADAO(); ADTO msg = ....; AService aService = new AService(db); return aService.serviceA(msg);
} } public class ABaseService{ protected void filterA(ADTO msg) { if(msg.getPropA() > 20){ String reslut = db.findBy(msg.getPropA(), msg.getPropB()); msg.setReslut(reslut); }else{ msg.setPropZ("Z"); } }
protected ADAO db; public ABaseService(ADAO db) { this.db = db; } } public class AService extends ABaseService{ public ADTO serviceA(ADTO msg) { filterA(msg); produceA(msg); return msg; } private void produceA(ADTO msg) { if(msg.getReslut() == null){ db.findBy( msg.getPropC()); } } public AService(ADAO db) { super(db); } } public class ADAO{ public String findBy(int a, float b) { return "ABC"; } public float findBy(String c) { return 33.33F; } }
较清晰的调用关系(图):
