2014-02-27 23 views
2

我正在開發一個Java代碼庫,並且剛剛成爲Java社區的新成員。我獨立使用Java,但從來沒有與可能做慣用的 Java的團隊合作。創建BO,DO,DTO,DAO僅對主ID執行SELECT有什麼技術優勢?

目標是在主鍵上執行SELECT。爲此,代碼庫會創建一個business object,一個data object,一個data transfer object和一個data access object。他們並不都是用同樣的方法創造出來的。有一個深層調用堆棧,唯一的目標是從另一個創建其中的一個。最後,DAO使用QueryEngine對象與持久性存儲進行通信。 QueryEngine完成抽象持久存儲的工作。

我看到抽象持久性存儲的價值,因爲您可以靈活地改變它的內容而不會破壞客戶端。我和下一個人一樣愛對象,但我不明白你爲什麼要用這種方式編寫代碼?這是慣用的Java,因爲整個代碼庫都充滿了這些?

PS:我忽略了對由於看似不必要的對象創建和方法調用引起的內存分配而導致的性能問題的討論。

PPS:使用的語言是Java,而且這裏鏈接的所有維基百科頁面看起來質量低下,並且Java特定,儘管它們試圖聽起來像是計算機科學。

回答

1

鬆耦合與性能之間總是存在反比關係。

隨着每個新版本的框架,鬆耦合增加和性能下降。但是這裏有一個問題,硬件配置正在以更快的速度提高,因此可以很好地補償性能下降。

由於Extra對象的性能下降,函數調用是過去的討論,今天優先考慮的是讓應用程序鬆耦合和可擴展。

就你而言,雖然你的流可能不需要這麼多的對象,但它有一致的流,以幫助新程序員很好地理解它。可能還有其他需要這種鬆散耦合的請求。

+0

我不確定這個失去耦合的價值是在這裏,雖然?所有這些層的目的只是一個 - 抽象持久存儲。沒有? –

0

有很多優點: 1.可重用性 - 其他人可以使用你的代碼的一部分,如果暴露,使其更通用。 2.維護 3.測試 4.安全 - 只公開需要的內容。 5.添加額外的要求會容易得多。

0

這是將整個系統分成多個層的最佳實踐。從你的描述中我可以看到你的應用程序有一個非常通用的數據層。如Vivek所述,添加這些圖層可能會使您鬆散耦合,但會降低性能。類似地,在易於編寫代碼的可維護性之間存在反向關係。就你而言,設計師已經考慮到可維護性。在正常情況下,由於結構如此複雜,公司擁有代碼生成工具。這些工具爲所有表格生成代碼,併爲開發人員提供高級對象。開發人員只需使用這些對象來訪問&修改數據。這是大多數面向對象編程語言(如Java)提供的封裝。