这种方式的策略模式是通过@Autowired注解注入
学生策略类
public interface StudentGenericStrategy<T> {
// 去学校
T goToSchool();
// 去厕所
T goToWC();
}
男学生接口
public interface BoyService extends StudentGenericStrategy {
}
实现类
public class BoyServiceImpl implements BoyService {
@Override
public Boy goToSchool() {
System.out.println("去学校");
return new Boy() ;
}
@Override
public Boy goToWC() {
System.out.println("去男厕所");
return new Boy();
}
}
女学生接口
public interface GirlService extends StudentGenericStrategy{
}
实现类
public class GirlServiceImpl implements GirlService {
@Override
public Girl goToSchool() {
System.out.println("去学校");
return new Girl() ;
}
@Override
public Girl goToWC() {
System.out.println("去女厕所");
return new Girl();
}
}
测试
这样注入测试类会 studentGenericStrategy会空指针,…还没时间看… 明明和示例写的一模一样
@Autowired
private StudentGenericStrategy<Boy> studentGenericStrategy;
@Test
public void generic(){
Boy boy = studentGenericStrategy.goToWC();
System.out.println(boy.getName());
}