2014-10-11 91 views
0

前言:這是一項任務,因此我將用戶名和密碼作爲純文本存儲在CSV文件中。基於CSV文件中的變量創建對象

下面是我給出的: username, password, staff type作爲我的數據文件。

後者要麼EEmployee爲,MManagerCContractor。這些都由他們自己的類和他們自己的方法來表示。

我已經實現了一個認證用戶輸入的用戶名/密碼的函數。我現在只是堅持如何根據最後的staff type值創建一個對象。

我在第一天真的解決辦法是做這樣的事情:

if (staffType.equals("E")) { 
    Employee user = new Employee(); 
else if (staffType.equals("C")) { 
    Contractor user = new Contractor(); 
else if (staffType.equals("M")) { 
    Manager user = new Manager(); 
} 

但是我又試圖在一個方法來包裝這一點,我卡在什麼作爲返回類型。我已經從Java和OO中休息了一年,所以遺憾的是,多態性,繼承,泛型方法等所有的概念都是模糊的。

很明顯,鑑於這是一項任務,我不想全面實施,只是提示正確的方向。

謝謝大家

回答

1

,如果你發現在這些類的IS_A關係(如經理員工),那麼你就必須使用繼承來實現它們:

Class Employee 
Class Manager extends Employee 

,並在該方案中,返回類型爲Employee

public Employee create(String staffType) { 
    Employee user = null; 
    if (staffType.equals("E")) { 
     user = new Employee(); 
    else if (staffType.equals("M")) { 
     user = new Manager(); 
    }  
    .... 
    return user; 
} 

否則,你可以使用一個接口作爲返回類型:

Class Employee implements Createable 
Class Manager implements Createable 

EmployeeManager所有常見的方法必須在Createable來定義。

interface Createable { 
    void method1() 
    .... 
} 

然後:

public Employee create(String staffType) { 
    Creatable user = null; 
    if (staffType.equals("E")) { 
     user = new Employee(); 
    else if (staffType.equals("M")) { 
     user = new Manager(); 
    }  
    .... 
    return user; 
} 
2

您必須創建一個層次結構。例如,經理和承包商都是員工,所以他們必須擴展員工類。 事情是這樣的:

class Employee 

class Manager extends Employee 

class Contractor extends Employee 

這樣的話,你可以指定返回值作爲員工,並返回員工或它的子類型之一。