策略设计模式
创建条件接口,定制实现接口方法,写调用的条件接口的方法,调用方法时将实现类传入
实体类:
import lombok.Data;
//Arbor 2022/6/24
@Data //lombok注解的生成get,set...
public class Employee {
String name;
Integer age;
Double salary;
public Employee(String name, Integer age, Double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
}
接口:
//Arbor 2022/6/24
public interface MyFlag<T> {
public boolean isTrue(T t);
}
实现类:
//Arbor 2022/6/24
public class FlagByAge implements MyFlag<Employee>{
@Override
public boolean isTrue(Employee employee) {
if(employee.getAge()>12){
return true;
}
return false;
}
}
测试类:
List<Employee> employees = Arrays.asList(
new Employee("张三",11,1111.0),
new Employee("李四",12,2222.0),
new Employee("王五",14,3333.0),
new Employee("赵六",14,4444.0),
new Employee("田七",15,5555.0)
);
public List<Employee> filterEmployee(List<Employee> employeeList,MyFlag<Employee> myFlag){
List<Employee> employees = new ArrayList<>();
for (Employee employee:employeeList) {
if(myFlag.isTrue(employee)){
employees.add(employee);
}
}
return employees;
}
@Test
public void test3(){
List<Employee> employeeList = filterEmployee(employees,new FlagByAge());
}