對於影響最小,我建議: 使ErrorActionResponse
作爲StudentDTO
與setter和getter方法的私有成員。在服務中,當出現異常時,例化ErrorActionResponse
並在StudentDTO
的成員中設置相同。因此,客戶必須首先檢查getErrorActionResponse()
是否返回null
。如果是這樣,則執行正常處理,處理異常情況。
CLASS StudentDTO:
public class StudentDTO {
...
private ErrorActionResponse errorActionResponse;
...
public ErrorActionResponse getErrorActionResponse() {
return errorActionResponse;
}
public void setErrorActionResponse(ErrorActionResponse errorActionResponse) {
this.errorActionResponse = errorActionResponse;
}
}
服務:
@Override
public StudentDTO getStudent(@WebParam(name = "name") String studentName) {
StudentDTO student = new StudentDTO();
try {
student = studentService.findStudentByName(studentName);
}
catch (Exception e) {
student.setErrorActionResponse(new ErrorActionResponse("student couldn't find by name"));
}
finally {
return student;
}
}
客戶端代碼:
if(student.getErrorActionResponse() == null) {
// do normal processing
}
else {
// handle exception case
}
在上述情況下,DTO有ErrorActionResponse
元件,其不涉及它的基本情況。所以,爲了更清潔的方法,我建議你考慮Adapter pattern。
來源
2012-05-29 07:39:00
San
如果我嘗試返回學生的名單,我將需要設置所有學生的errorActionResponse在列表 – kamaci
我同意。我的第一個建議是針對您的OP要求 - 返回學生而不是列表的方法(您現在要說明)。 – San