2012-03-18 52 views
0

我會盡力總結。Java繼承設計思想 - 建議通緝

  • 使用的ORM(並不真正相關)Hibernate框架

這裏是我的想法:

  • 我想我所有的模型類(這純粹是包含獲取/設置字段,表示我的表格內)全部從空白父類繼承

  • 單個數據庫類用於記錄檢索/存儲包含許多方法這些方法,這種方法。對於返回集合的方法中,它們返回一個類型父對象的,並且一旦檢索

小例子

父類(父對象)

被轉換爲正確的類類型
public class DataModel { 

} 

子類

public class A extends DataModel { 

    private String name; 
    private String message; 


    public A (String name) { 
     this.name = name; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 

數據庫類

public class Database { 

    public DataModel returnSingleRecord() { 



//eventually have an enum as a param to determine what type of child object of DataModel they would like returned 


     //data retrieval here etc 
     A a = new A("ashley"); 
     return a; 

    } 

} 

用法示例

public class MainController { 


    public static void main(String[] args) { 

     Database r = new Database(); 


     A a = (A) r.returnSingleRecord(); 

     System.out.println(a.getName()); 

    } 
} 

我將有共12個班的類似A.最後,我的計劃是建立一個枚舉類每個返回集合的方法都會接受一個Enum值,方法中的switch語句將決定返回哪個對象,如A,B或C.

這是個好主意嗎?老實說,這似乎是一個很好的方法,可以顯着減少冗餘代碼,並且可以將所有數據庫方法的數量降至10以下。只是一個似乎就足以作爲答案的是,似乎太好了,以至於不真實:)。

編輯:只是爲了說明如果我要傳遞數據到存儲方法,我將不得不使用DataModel作爲類型和instanceof來確定類的類型,這可以在一個方法中完成,所以仍然看起來像一個很好的理念。

編輯2:得出這樣的結論:這是一個好主意,但是對於返回特定信息在日期之間,擴展數據庫的幾個類將是最合適的選項。

回答

1

是的,我認爲這是一個好主意。我們正在爲我的一個類使用數據庫做一個大項目,我們的模型中有一個名爲「BusinessObject」的頂級父類,它有一個ID(一個GUID),一個用於alreadyInDatabase的布爾值(知道是否存儲需要是一個插入或更新)和一個布爾值來表示髒(任何時候當你調用一個set方法時,它會將boolean設置爲true以知道該對象是否與數據庫中的內容不同)。它被證明是非常有用的,我也編寫了一個非常有用的通用數據訪問對象,用於從數據庫中獲取數據,我知道框架可以處理大部分這些東西。無論如何,你的計劃聽起來不錯:)