總的來說,我的問題是關於最佳實踐和效率。今天,我和老師就MVC Legacy的面向對象進行了討論。我們正在經歷我以前的一個項目,問題是「有什麼意義?」 我的項目(和我的所有項目)的結構方式,對我來說沒有意義。以下是我的代碼後面的示例。MVC Legacy中的Java OOP
控制器 - 從form/View獲取字符串值並將它們傳遞給Service類。單一職責將聲明這是它所負責的一切,而不是創建一個對象來傳遞,但創建一個< Map < String,Object >>完全可以理解。
服務等級 - 遵循最佳實踐/單一責任,除了調用請求的方法/密碼值之外,這些方法不應該做任何其他操作。
DAO - DAO應該負責將所有數據/對象轉換爲D.B存取器的可用形式並將其返回。
但爲什麼建立一個對象只是爲了把它撕下來?特別是當你可以傳遞一個值列表作爲一個Map < String,Object>所以所有的值和列匹配?
以下是代碼片段來幫助說明我的問題:
服務類:
public class ClientService {
private Client_SQL_DAO_Strategy dao;
public ClientService(Client_SQL_DAO_Strategy dao){
setDaoStrategy(dao);
}
public void sendClientToStorage(Client client) throws SQLException, ClassNotFoundException{
dao.sendClientToDatabase(client);
}
public void updateClient(List values) throws SQLException, ClassNotFoundException {
dao.updateClient(values);
}
}
DAO
public void saveClient(Client client) throws ClassNotFoundException, SQLException {
List columns = new ArrayList<>();
columns.add("Last_Name");
columns.add("First_Name");
columns.add("Business_Name");
columns.add("Phone");
List<Object> values = new ArrayList<>();
values.add(client.getClientLastName());
values.add(client.getClientFirstName());
values.add(client.getClientBusiness());
values.add(client.getClientPhone());
accessor.createRecord(TABLE_NAME, columns, values);
}
public void updateClient(List listOfValues) throws ClassNotFoundException, SQLException{
List<Object> columns = new ArrayList<>();
columns.add("Last_Name");
columns.add("First_Name");
columns.add("Business_Name");
columns.add("Phone");
int primaryKey = Integer.valueOf(listOfValues.get(0).toString());
accessor.updateRecord(TABLE_NAME, columns, listOfValues, PK_COLUMN, primaryKey);
}
在DAO中提供的兩種方法比較了該方法更有意義?創建客戶端將其關閉或將相關的值和列傳遞給訪問者?此地圖<字符串,對象>似乎是兩種方法的理想選擇。
是的,我也知道更新的技術,但在當前的學期Legacy是本週的教訓。
你能說清楚'傳統'是什麼意思嗎?你不是指使用ORM的遺產嗎? – jrahhali
@jrahhali我可能使用了錯誤的術語,對ORM有一個非常寬泛的理解。我對Object Relational Mapping的理解是一種OOP技術,用於在兩個使用相似但又不同數據類型的系統之間轉換數據,例如java存儲日期的方式與數據庫存儲日期的方式。而且,由於這是一種比較古老的技術,我認爲「遺產」,就我使用它而言,意思是「老派編程技術」。 –
問題不在於它是在比較我提供的DAO中的兩種方法。問題是,爲什麼建立一個對象只能在DAO中解析它? –