实际的开发过程中,可能有这种情况,前台传递过来一个值,不同的值对应不同的接口的实现类,普通的方法实现如下
1. public interface Person{
void eat(String name);
}
public class Student implements Person{
void eat(String name){
System.out.println("Student eat");
}
}
public class Teacher implements Person{
void eat(String name){
System.out.println("Teacher eat");
}
}
public class Demo{
public static void main(String[] args){
Person p=getPerson("teacher");//即可得到Teacher对象
Person p=getPerson("student");//即可得到Student对象
}
public Person getPerson(String type){
if(type.equals("student")){
return new Student();
}else if(type.equals("teacher")){
return new Teacher();
}
}
}
2.spring boot实现方式
public interface Person{
void eat(String name);
}
@Service("student")
public class Student implements Person{
void eat(String name){
System.out.println("Student eat");
}
}
@Service("teacher")
public class Teacher implements Person{
void eat(String name){
System.out.println("Teacher eat");
}
}
@Service
public class Demo{
@Autowired
public Map(String, Person) personMap;
Person p=personMap("teacher");//即可得到Teacher对象
Person p=personMap("student");//即可得到Student对象
}