최고의 필터 패턴 튜토리얼 2024년, 이 튜토리얼에서는 실현,를 배울 수 있습니다.
필터 모드 (필터 패턴) 또는 표준 모드 (기준 패턴) 개발자들을 연결하는 방법을 분리하는 논리 연산을 통해 객체 세트를 필터링하기 위해 다른 기준을 사용할 수 있도록 디자인 모델이다. 이상의 조건은 단일 표준을 구하는 결합 구조 스키마 디자인 패턴이 유형.
우리는사람의개체 목록을 필터링 할 인터페이스의Person객체, 기준 엔티티 클래스 인터페이스와 구현을 작성합니다.CriteriaPatternDemo,우리 데모 클래스인오브젝트의리스트를 필터링하는 다양한 기준 및 이들의 조합에 기초하여기준물체를 사용.
이 클래스의 표준 응용 프로그램에 클래스를 만듭니다.
Person.java
공용 클래스 사람 { 개인 문자열 이름; 개인 문자열 성; 개인 문자열 maritalStatus; 공공 사람 (문자열 이름, 문자열 성별, 문자열 maritalStatus) { this.name = 이름; this.gender는 성별 =; this.maritalStatus = maritalStatus; } 공공 문자열 getName () { 이름을 반환; } 공공 문자열 getGender () { 성별을 반환; } 공공 문자열 getMaritalStatus () { maritalStatus를 반환; } }
표준 (기준)에 대한 인터페이스를 만듭니다.
Criteria.java
가져 오기를 java.util.List; 공용 인터페이스 기준 { 공개 목록 <사람> meetCriteria (목록 <사람> 사람); }
기준 인터페이스구현 엔티티 클래스를 만듭니다.
CriteriaMale.java
수입 인 java.util.ArrayList; 가져 오기를 java.util.List; 공용 클래스 CriteriaMale는 기준 {구현 @Override 공개 목록 <사람> meetCriteria (목록 <사람> 사람) { 목록 <사람> malePersons = 새로운 ArrayList를 <사람> (); {: (사람 사람 사람)에 대한 (person.getGender (). equalsIgnoreCase ( "MALE")) {경우 malePersons.add (사람); } } malePersons를 반환; } }
CriteriaFemale.java
수입 인 java.util.ArrayList; 가져 오기를 java.util.List; 공용 클래스 CriteriaFemale는 기준 {구현 @Override 공개 목록 <사람> meetCriteria (목록 <사람> 사람) { 목록 <사람> femalePersons = 새로운 ArrayList를 <사람> (); {: (사람 사람 사람)에 대한 (person.getGender (). equalsIgnoreCase ( "FEMALE")) {경우 femalePersons.add (사람); } } femalePersons를 반환; } }
CriteriaSingle.java
수입 인 java.util.ArrayList; 가져 오기를 java.util.List; 공용 클래스 CriteriaSingle는 기준 {구현 @Override 공개 목록 <사람> meetCriteria (목록 <사람> 사람) { 목록 <사람> singlePersons = 새로운 ArrayList를 <사람> (); {: (사람 사람 사람)에 대한 (person.getMaritalStatus (). equalsIgnoreCase ( "SINGLE")) {경우 singlePersons.add (사람); } } singlePersons를 반환; } }
AndCriteria.java
가져 오기를 java.util.List; 공용 클래스 AndCriteria는 기준 {구현 개인 기준 기준; 개인 기준 otherCriteria; 공공 AndCriteria (기준 기준 기준 otherCriteria) { this.criteria = 기준; this.otherCriteria = otherCriteria; } @Override 공개 목록 <사람> meetCriteria (목록 <사람> 사람) { 목록 <사람> firstCriteriaPersons = criteria.meetCriteria (명); otherCriteria.meetCriteria (firstCriteriaPersons)을 반환; } }
OrCriteria.java
가져 오기를 java.util.List; 공용 클래스 OrCriteria는 기준 {구현 개인 기준 기준; 개인 기준 otherCriteria; 공공 OrCriteria (기준 기준 기준 otherCriteria) { this.criteria = 기준; this.otherCriteria = otherCriteria; } @Override 공개 목록 <사람> meetCriteria (목록 <사람> 사람) { 목록 <사람> firstCriteriaItems = criteria.meetCriteria (명); 목록 <사람> otherCriteriaItems = otherCriteria.meetCriteria (명); {(otherCriteriaItems 사람 사람)에 대한 만약 (! firstCriteriaItems.contains (사람)) { firstCriteriaItems.add (사람); } } firstCriteriaItems를 반환; } }
사람개체 목록을 필터링하는 이들 다양한 기준 (기준) 및 이들의 조합을 사용.
CriteriaPatternDemo.java
import java.util.ArrayList; import java.util.List; public class CriteriaPatternDemo { public static void main(String[] args) { List<Person> persons = new ArrayList<Person>(); persons.add(new Person("Robert","Male", "Single")); persons.add(new Person("John","Male", "Married")); persons.add(new Person("Laura","Female", "Married")); persons.add(new Person("Diana","Female", "Single")); persons.add(new Person("Mike","Male", "Single")); persons.add(new Person("Bobby","Male", "Single")); Criteria male = new CriteriaMale(); Criteria female = new CriteriaFemale(); Criteria single = new CriteriaSingle(); Criteria singleMale = new AndCriteria(single, male); Criteria singleOrFemale = new OrCriteria(single, female); System.out.println("Males: "); printPersons(male.meetCriteria(persons)); System.out.println("\nFemales: "); printPersons(female.meetCriteria(persons)); System.out.println("\nSingle Males: "); printPersons(singleMale.meetCriteria(persons)); System.out.println("\nSingle Or Females: "); printPersons(singleOrFemale.meetCriteria(persons)); } public static void printPersons(List<Person> persons){ for (Person person : persons) { System.out.println("Person : [ Name : " + person.getName() +", Gender : " + person.getGender() +", Marital Status : " + person.getMaritalStatus() +" ]"); } } }
출력을 확인합니다.
남성 : 사람 : [이름 : 로버트, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 존, 성별 : 남성, 결혼 여부 : 기혼] 사람 : [이름 : 마이크, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 바비, 성별 : 남성, 결혼 여부 : 미혼] 여성 : 사람 : [이름 : 로라, 성별 : 여성, 결혼 여부 : 기혼] 사람 : [이름 : 다이애나, 성별 : 여성, 결혼 여부 : 미혼] 싱글 남성 : 사람 : [이름 : 로버트, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 마이크, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 바비, 성별 : 남성, 결혼 여부 : 미혼] 단일 또는 여성 : 사람 : [이름 : 로버트, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 다이애나, 성별 : 여성, 결혼 여부 : 미혼] 사람 : [이름 : 마이크, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 바비, 성별 : 남성, 결혼 여부 : 미혼] 사람 : [이름 : 로라, 성별 : 여성, 결혼 여부 : 기혼]