策略设计模式

创建条件接口,定制实现接口方法,写调用的条件接口的方法,调用方法时将实现类传入
实体类:

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());
    }
posted @ 2022-06-24 10:56  Arborblog  阅读(14)  评论(0编辑  收藏  举报