2015-06-15 68 views
0

我這裏介紹我以前的問題: Java - how can I loop methods with same name but different parameters使用的包裝類 - java的

而且我已經涉及到這個問題。

這裏給出了一個例子 - 使用包裝類的一個很好的例子嗎?

class Wrapper{ 
    Part param1; 
    File param2; 
    File param3; 
} 

class Validator{ 
    void validate (Wrapper wrapper); 
} 


class ValidatorA extends Validate{ 
void validate (Wrapper wrapper){ 
    //use wrapper.part... 
} 
} 

class ValidatorC extends Validate{ 
void validate (Wrapper wrapper){ 
    //use wrapper.file... 
    } 
} 

但它讓我感到驚訝。包裝是否正確的名稱?是有效的包裝類嗎?從我讀的包裝類用於原語使用它們作爲對象,不應該那麼它被命名爲不同的?或者我錯了?

我需要它被稱爲相同的方式,所以我可以循環它,所以超載不是答案。鑑於類工作正常 - 我只是覺得如果它是正確的方式來使用包裝名稱?

+0

恕我直言,截至目前,類名沒有任何意義。另一位開發人員將如何理解該課程的目的?它有三個領域,它們是如何相關的? – meskobalazs

+0

它包含所有驗證器所需的所有參數 – arienn

回答

0

在這種情況下包裝不是好的選擇。通常使用包裝來包裝一些不同的東西,所以它們看起來相似,即使它們完全不同。例如,您可能有一些來自不同來源的數據流 - 文件,http連接,資源。所有你關心的是從這個源讀取數據。所以,你寫封裝從任何來源讀取,只是提供數據。

包裝不應與通用功能混合使用。在上面的例子中,所有3個來源都可以視爲流,所以自然的解決方案將全部用作流。但即使最終在內部包裝中,它們仍被用作流,它們仍然需要不同的處理和行動來處理它們。包裝師會關心它。你不關心什麼是包裝包裝 - 你只是用包裝提供的常見方式使用這個包裝的東西。

在你的例子中,我們有封裝了一些數據和功能的常規對象。這是常規的面向對象方法。調用它包裝只會誤導可能稍後使用此代碼的用戶。

+0

它應該如何調用?它需要從窗體發送零件,還有一些在主流程中創建的變量。 – arienn

+0

'private int numberOfFiles; private String pathToWrite; 私人部分; 私人列表附件; 'attachments.add(new Zalaczniki(attachmentWrapper.getPathToWrite()+ File.separator + fileName)); '爲(第一部分的部分:fileParts){ attachmentWrapper.setPart(部分);' 'NUMBEROFFILES = NUM​​BEROFFILES + 1; attachmentWrapper.setNumberOfFiles(numberOfFiles);' 其全部來自代碼 ' – arienn