2014-10-11 47 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 

这样的话,你可以指定返回值作为员工,并返回员工或它的子类型之一。