我知道一點關於Object Oriented design,但我不確定如何在代碼中使用這些原則。這裏就是我的工作:我該如何設計這個更好? (避免使用面向對象設計的switch語句)
public void Query(Agency agency, Citation queryCitation) {
queryCitation.AgencyCode = agency.AgencyCode;
switch (agency.ClientDb.Type) {
case "SQL":
QueryOracle(agency, queryCitation);
break;
case "PIC":
QueryPick(agency, queryCitation);
break;
}
}
(。其中大部分是從NHibernate的,我用舊的數據庫系統的工作對象和我重構它的一部分轉換成代碼庫)很顯然,我可以做這裏有不同的東西,所以我不需要具有相同輸入的不同數據庫查詢的重複函數。它應該僅僅根據代理對象知道是使用Oracle數據庫還是使用Pick數據庫連接。 (如果你從來沒有聽說過Pick數據庫,那麼在我開始在這裏工作之前我一直沒有聽說過,我們通過HTTP請求來查詢它,所以它不是SQL。)
我應該做一個接口,用於例如被稱爲「ClientDbConnection」,然後讓實現該接口,代碼來查詢數據庫移動到這些,然後有一些像「agency.clientDb.Query(queryCitation)」兩班替換這整個功能?我想我在這裏大聲思考,但任何意見都將不勝感激。
你能解釋一下嗎?在Stackoverflow上,僅鏈接答案不是很受歡迎。 – 2016-05-27 14:23:11