我是一位初學程序員,學習如何爲我的模塊設計API。我想到了兩種類型的服務類來提供其他類使用的API。服務層的API設計
第一個例子通過參數來處理邏輯,第二個例子通過對象方式來處理。
哪一個更好的方法/設計爲我提供其他類使用的業務方法?
作爲我應該使用的一般經驗法則?
實施例1 - 服務A
public class ServiceA {
private SampleDAO dao = new SampleDAO();
private static final String DRAFT_STATUS = "DRAFT";
private static final String APPROVED_STATUS = "APPROVED";
private static final String SUBMITTED_STATUS = "SUBMITTED";
public boolean isDocumentApprove(String documentId) {
Document doc = getDocument(documentId);
return (APPROVED_STATUS.equals(doc.getStatus()));
}
public boolean isDocumentDraft(String documentId) {
Document doc = getDocument(documentId);
return (DRAFT_STATUS.equals(doc.getStatus()));
}
public boolean isDocumentSubmited(String documentId) {
Document doc = getDocument(documentId);
return (SUBMITTED_STATUS.equals(doc.getStatus()));
}
private Document getDocument(String documentId) {
return (dao.getByDocumentId(documentId));
}
}
實施例2 - 服務B
public class ServiceB {
private SampleDAO dao = new SampleDAO();
private static final String DRAFT_STATUS = "DRAFT";
private static final String APPROVED_STATUS = "APPROVED";
private static final String SUBMITTED_STATUS = "SUBMITTED";
public Document getDocument(String documentId) {
return (dao.getByDocumentId(documentId));
}
public boolean isDocumentApprove(Document doc) {
return (APPROVED_STATUS.equals(doc.getStatus()));
}
public boolean isDocumentDraft(Document doc) {
return (DRAFT_STATUS.equals(doc.getStatus()));
}
public boolean isDocumentSubmited(Document doc) {
return (SUBMITTED_STATUS.equals(doc.getStatus()));
}
}
我沒有看到第二個例子的要點。如果調用者已經有一個Document實例,爲什麼它會調用一個服務來獲取文檔的狀態?爲什麼不簡單地執行'doc.isApproved()'? –
調用者將檢索文檔並將其傳遞給相應的方法以檢查文檔的狀態等。 – youcanlearnanything
我明白這一點。但這不必要的複雜。如果您有文檔,請直接通過調用文檔中的方法來獲取其狀態,而不是在服務上調用其他方法。 –