디자인 모드 3.8 필터 모드

2683 단어
바이트 점프
베 이 징, 항 저 우, 무한, 광저우, 심 천, 상하 이, 6 대 도시 가 당신 을 기다 리 고 있 습 니 다.
관심 있 는 친 구 는 개인 적 으로 상담 & 내 추 를 할 수도 있 고 링크 를 통 해 직접 배달 할 수도 있 습 니 다!
대량의 HC, 빠 른 응답, 빨리 와 서 나 와 동료 가 되 어 라.
오늘 톱기사, 틱 톡, 틱 톡 도 안 으로 밀 수 있어 요 ~
클릭 하여 제 블 로그 에 들 어 오 세 요.
필터 모드 는 서로 다른 조건 으로 대상 을 걸 러 내 고 논리 적 조작 을 통 해 디 결합 방식 으로 링크 를 연결 합 니 다.이런 유형의 디자인 모델 은 구조 모델 에 속한다. 왜냐하면 이 모델 은 여러 가지 기준 을 조합 하여 하나의 기준 을 얻 기 때문이다.
3.8.1 세부 사항
순서
  • 필터 할 일반 클래스 를 만 듭 니 다. 개인 속성 을 얻 는 get 방법
  • 이 있어 야 합 니 다.
  • 인 터 페 이 스 를 만 들 고 여과 방법 을 규정 한다
  • 인 터 페 이 스 를 실현 하고 필요 에 따라 여과 방법 을 다시 쓸 수 있 으 며 매개 변 수 는 보통 여과 류 를 저장 하 는 용기 류
  • 를 전달 합 니 다.
  • 복잡 한 여과 류 는 전달 인터페이스 파라미터 (기타 기초 여과 류 재 활용) 를 설정 하여 다 중 여과
  • 를 실현 할 수 있다.
    Java8
    자바 8 의 lambda 표현 식 은 필 터 를 더욱 간단하게 실현 할 수 있 습 니 다.
    List movies = Stream.of(
                    new Movie("    ","comedy"),
                    new Movie("  ", "comedy"),
                    new Movie("   ", "suspense"))
                    .filter(var -> "comedy".equals(var.getType()))
                    .collect(Collectors.toList());
    

    3.8.2 영화 의 예
  • 필터 링 된 클래스 Movie 를 만 들 고 type 속성 에 따라 필터 링
  • 인터페이스 만 들 기 Criteria, 필터 방법 규정
  • 코미디 영화 필터 ComedyMovieCriteria 를 만 들 고 comedy==movie.type 에 따라 필요 한 코미디 영화
  • 를 걸 러 낸다.
    public class Test {
        public static void main(String[] args) {
            List movies = new ArrayList(){{
                add(new Movie("    ","comedy"));
                add(new Movie("  ", "comedy"));
                add(new Movie("   ", "suspense"));
            }};
            System.out.println(new ComedyMovieCriteria().meetCriteria(movies));
        }
    }
    
    //       
    class Movie {
        private String name;
        //     
        private String type;
    
        public Movie(String name, String type) {
            this.name = name;
            this.type = type;
        }
        // getters & setters & toString
    }
    
    //      
    interface Criteria {
        /**
         * @param movies        
         * @return       
         */
        List meetCriteria(List movies);
    }
    
    //           ,   movie.type==comedy
    class ComedyMovieCriteria implements Criteria {
        @Override
        public List meetCriteria(List movies) {
            List result = new ArrayList<>();
            for (Movie movie : movies) {
                if ("comedy".equals(movie.getType())) {
                    result.add(movie);
                }
            }
            return result;
        }
    }
    

    좋은 웹페이지 즐겨찾기