2010-04-01 91 views
0

在ETL應用我的工作,我們有三個基本過程:如何根據狀態限制對班級數據的訪問?

  1. 驗證並從第三方文件中接收到的值在我們的系統
  2. 匹配值分析客戶信息的XML文件在我們的系統
  3. 加載客戶數據

這裏的問題是,我們可能需要顯示任何或所有上述國家的客戶信息的內部用戶,並且數據在客戶類,將從來沒有b在我們的系統中匹配值之前填充(步驟2)。出於這個原因,我想有值,甚至無法使用時,客戶是在這種狀態下被訪問,我想必須避免一些重複的邏輯無處不在,如:

if (customer.IsMatched) DisplayTextOnWeb(customer.SomeMatchedValue); 

我首先想到的因爲這是在Customer的頂部添加一些接口,只會暴露當前狀態的屬性和行爲,然後只處理這些接口。這種方法的問題是,似乎沒有好的方法來從ICustomerWithNoMatchedValues移動到ICustomerWithMatchedValues沒有做直接轉換,等等......(或者至少我找不到一個)。

我不能第一個遇到過這個問題,你通常如何處理這個問題?

作爲最後的警告,我想這個解決方案提前發揮好與FluentNHibernate :)

謝謝...

回答

0

添加從客戶打電話MatchedCustomer繼承(例如)一類。然後,第2步成爲向客戶推銷MatchedCustomer的過程。你仍然需要編寫代碼來做到這一點;它通常會在構造函數中完成:

public class MatchedCustomer : Customer 
{ 
    public MatchedCustomer(Customer customer) 
    { 
     // set properties from customer, i.e. 
     FirstName = customer.FirstName; 
    } 
} 
0

我不明白絕對清楚,但它似乎是你只需要爲數據類創建Proxy-class