技术开发 频道

SCA软件架构设计理念分析

    我们再来看使用泛型的写法,父类或接口中定义了泛型约束,只要求这个“e”是Employee的子类即可,下面的两个实现类可以清楚地看到实现接口方法的返回类型不同了,但返回类型都是Employee的子类。

    //使用泛型的Employee工厂接口

    
public interface EmployeeFactoryByGeneric<e extends Employee> {
    
public e createEmployee();
    }

    
//使用泛型的DepartmentLeader工厂实现

    
public class DepartmentLeaderFactory implements EmployeeFactoryByGeneric<DepartmentLeader>{
    
public DepartmentLeader createEmployee()
    {
    
return new DepartmentLeader();
    }
    }

    
//使用泛型的Employee工厂实现

    
public class EmployeeFactoryImplByGeneric implements EmployeeFactoryByGeneric<EmployeeImpl> {
    
public EmployeeImpl createEmployee()
    {
    
return new EmployeeImpl();
    }
    }

    这样有什么好处呢?让我们来看看如何调用的。可以看出调用方面没有什么大的区别。

    JDK1.4的做法

    EmployeeFactory factory = new EmployeeFactoryImpl();
    Employee leader =  factory.createEmployee("leader");
    leader.getName();

    使用泛型的做法:

    EmployeeFactoryByGeneric factoryByGeneric = new DepartmentLeaderFactory();
    Employee employee =  factoryByGeneric.createEmployee();
    employee.getName();

0
相关文章