2017-09-18 46 views
0

比方說,我有User班,User可以是Employee,Applicant(既有職位,但在其他地方申請工作),或者都沒有(失業和不申請工作)。如何在Java中建立Can-Be-A關係?

我如何定義在Java使得User可強制轉換爲Employee但只有當他們實際上被採用,並且同樣爲其他場景,如果他們失業(不能被強制轉換爲EmployeeApplicant這種關係而不是申請工作)?

這是否需要爲每個組合繼承User的單獨類別,即Employee,Applicant, EmployeeAndApplicant

+0

在運行時驗證鑄件。如果你想確保它是正確的類型,首先檢查。 – shmosel

+1

您可以使用組合和/或多個接口來支持組合。 – shmosel

+1

聽起來像「被僱用」和「應用」是狀態而不是「用戶」的固有特性,所以我通常會將它們拆分爲子記錄。 – chrylis

回答

1

只是拼出什麼,我想在評論(未測試)

public class User { 

    /** this user’s employment, or null if unemployed */ 
    private EmployeeRecord employment; 
    /** this user’s application, or null if not an applicant for any job */ 
    private ApplicantRecord application; 

    // getters, setters etc. 

} 

你甚至可以使用,比如說,Collection<ApplicantRecord>模型,用戶可以在被申請一種以上的工作本來是時間,如果相關的話。