2017-06-07 43 views
1

這裏是psudeocode:如何在像結構這樣的樹中完全擺脫if-else與OOP?

if (parttimeEmployee) { 
    if (country == USA) { 

    } 
    if (country == UK { 

    } 
} 

if (fullTimeEmployee) { 
    if (country == USA) { 

    } 
    if (country == UK) { 

    } 
} 

現在,兼職和全職員工可以從「僱員」接口被繼承。

但是我們有另外的if-else重複/複製裏面每個人對「國家」

哪些設計模式,我們可以用它來完全替代這種嵌套條件?

+0

重要的是要知道每個國家的「if」裏面有什麼。 – niksofteng

回答

1

您可以使用組合,爲每個員工提供一個Country對象,您可以在該對象上調用一個方法,該方法將爲該國家實施正確的行爲,假定行爲相同,而不管Employee的子類是哪個或兼職)。如果您使用員工類型和國家的組合來定義行爲,那麼您必須在某個地方擁有分支機構,或者使用FullTimeUSEmployee,PartTimeUSEmployeeFullTimeUKEmployee等等。

重要的是要考慮,但如果使用任何特定的設計模式實際上是改善您的代碼;嵌套條件可能比複雜的大型複雜類層次結構更簡單,更易於使用。就我個人而言,除非內部存在重複代碼,否則我會保留分支,如果存在,請將重複代碼移至某個函數/方法,以便可以重用 - 但我傾向於關注DRY而不是循環複雜性。