2008-09-23 50 views
1

很多時候,我將擁有一個Business對象,該對象具有用於用戶索引的屬性或用於某些數據的一組索引。當我在窗體或其他視圖中顯示此對象時,我需要用戶全名或數據的其他一些屬性。通常我創建另一個類myObjectView或類似的東西。處理這種情況的最佳方式是什麼?如何防止同一業務對象有多個類?

爲了進一步闡明: 如果我有一個問題跟蹤器的類,並且我的類的問題已將IxCreatedByUser作爲屬性和IxAttachment值(附件記錄的索引)的集合。當我在網頁上顯示此內容時,我想顯示John Doe而不是IxCreatedByUser,並且想顯示附件和頁面上文件名的鏈接。所以通常我會創建一個帶有附件對象集合和一個CreatedByUserFullName屬性或類似屬性的新類。創建這個第二課以在頁面上顯示數據時感覺不對。也許我錯了?

+0

無法真正理解你想要什麼。 – 2008-09-23 00:30:16

+0

複雜性往往不能從存在中消除。你在做的是讓現實變得更清晰一些:-) [http://en.wikipedia.org/wiki/Facade_pattern] – tovare 2008-09-23 00:58:37

回答

2

立面圖案。

我認爲你的方法創建一個façade模式來抽象複雜性與多個數據源通常是適當的,並會讓你的代碼容易理解。

應該注意創建太多抽象層次,因爲間接級別會破壞初始嘗試使代碼更易於閱讀。特別是,如果你覺得你只是寫課,以配合你在其他地方所做的事情。對於實例,如果你有一個myLoanView,不一定需要爲系統中的每個對話創建一個myView。從代碼中退出10步,也許創建一個可重複使用和直觀抽象的外觀,您可以在多個地方使用。

隨意闡述你的挑戰的確切性質。

1

一個關鍵原則是你的每個類都應該有一個明確的目的。如果您的「業務對象」類的目的是公開與業務對象相關的相關數據,則可以完全合理的在該類上創建一個屬性,將對查找描述的請求委託給負責該類的相關類信息。任何特定於您的課程的格式都將在該屬性中完成。

0

這裏的一些準則,以幫助您決定如何處理這個問題(很常見,IMO)模式:如果你需要的是一個匆匆的鏈接查找表不經常更改(

  1. 例如鏈接到狀態表和/或國家/地區的地址表),則可以保留查找表的惰性加載靜態副本。

  2. 如果您有一個非常大的類需要大量的聯接或子查詢才能加載以用於顯示目的,您可能希望爲顯示目的製作「視圖」或「信息」類,就像您所描述的那樣以上。只要確保XInfo類(用於顯示)加載速度比X類快(用於編輯)。這是在數據庫端使用視圖可能是一個非常好的主意的情況。

相關問題