Modo de filtro Java (padrão de filtro/critério)
Padrão de filtro ou padrão de critérios é um padrão de design que permite que os desenvolvedores usem padrões diferentes para filtrar um grupo de objetos e conectá -los de uma maneira dissociada através de operações lógicas. Esse tipo de padrão de design é um padrão estrutural, que combina vários padrões para obter um único padrão.
Padrão de filtro ou padrão de critérios é um padrão de design que permite que os desenvolvedores usem padrões diferentes para filtrar um grupo de objetos e conectá -los de uma maneira dissociada através de operações lógicas. Esse tipo de padrão de design é um padrão estrutural, que combina vários padrões para obter um único padrão.
concluir
Criaremos um objeto de pessoa, interface de critérios e classe de entidade que implementa a interface para filtrar a lista de objetos de pessoa. Critériopatterndemo, nossa classe de demonstração usa objetos de critérios para filtrar listas de objetos de pessoa com base em vários padrões e combinações.
Etapa 1
Crie uma classe para aplicar o padrão nessa classe.
Person.java
public class Pessoa {Nome da String Private; gênero de cordas privadas; String privada mieitalstatus; Pessoa pública (nome da string, gênero da string, string mieitalStatus) {this.name = name; this.gnder = gênero; this.MaritalStatus = mieitalStatus; } public string getName () {return name; } public string getGender () {return gênero; } public string getMaritalStatus () {return mieitalStatus; }}Etapa 2
Crie uma interface para critérios.
Critérios.java
importar java.util.list; Critérios de interface pública {Lista pública <Pesso> MeetCriteria (List <Pesso> Pessoas);}Etapa 3
Crie uma classe de entidade que implemente a interface dos critérios.
Criteriamale.Java
importar java.util.ArrayList; importar java.util.list; classe pública Criteriamale implementa critérios {@Override Public List <Pesso> MeetCriteria (List <Soper> PESSONS) {LIST <Pessoa> malepesons = new ArrayList <Pesso> (); para (pessoa da pessoa: pessoas) {if (Person.getGender (). Equalsignorecase ("masculino")) {malepersons.add (pessoa); }} retorna malepesons; }}Critériofemale.java
importar java.util.ArrayList; importar java.util.list; classe pública Criteriafemale implementa os critérios {@Override public List <Pren> meetcriteria (list <sesso> pessoas) {list <son> femalePersons = new ArrayList <Pesso> (); para (pessoa da pessoa: pessoas) {if (Person.getGender (). Equalsignorecase ("feminino")) {femalePersons.add (pessoa); }} retornar femalepesons; }}Critriasingle.java
importar java.util.ArrayList; importar java.util.list; Critérios da classe pública implementa critérios {@Override Public List <Soper> meetcriteria (list <Soper> pessoas) {list <Soper> singlePersons = new ArrayList <Pesso> (); para (pessoa da pessoa: pessoas) {if (Person.getMaritalStatus (). Equalsignorecase ("single")) {singlepersons.add (pessoa); }} retornar singleperons; }}AndCriteria.java
importar java.util.list; classe pública e critério implementa critérios {critérios privados critérios; critérios privados outros critérios; public e critérios (critérios de critério, critérios outros critérios) {this.criteria = critérios; this.Othercriteria = outros critérios; } @Override Public List <Pesso> meetcriteria (list <soper> pessoas) {list <Soper> FirstCriteriAperSonsons = critério.meetCriteria (pessoas); retornar outros critérios.MeetCriteria (FirstCriteriaPersons); }}Orcriteria.java
importar java.util.list; a classe pública Orcriteria implementa critérios {critérios privados critérios; critérios privados outros critérios; orcriteria público (critérios de critério, critérios outros critérios) {this.criteria = critérios; this.Othercriteria = outros critérios; } @Override Public List <Pesso> MeetCriteria (List <Soper> PESSONS) {LIST <Pessoa> FirstCriteriAtemss = Critereria.MeetCriteria (Pessoas); Lista <S Pessoa> Outros criteriaItems = OtherCriteria.MeetCriteria (Pessoas); para (pessoa de pessoa: outros criteriaItems) {if (! FirstCriteriATeMs.Contains (Pessoa)) {FirstCriteriAtems.add (pessoa); }} retornar FirstCriteriAtems; }}Etapa 4
Use critérios diferentes (critérios) e sua combinação para filtrar listas de objetos de pessoa.
Critériopatterndemo.java
classe pública CriteriaPatterNDemo {public static void main (string [] args) {list <sesson> pessoas = new ArrayList <Pesso> (); pessoas. pessoas. pessoas.add (nova pessoa ("Laura", "feminina", "casada")); pessoas.add (nova pessoa ("Diana", "feminina", "single")); pessoas.add (nova pessoa ("Mike", "masculino", "single")); pessoas.add (nova pessoa ("bobby", "masculino", "single")); Critérios Male = New Criteriamale (); Critério feminino = novo critériofemale (); Critérios single = new Criterriesingle (); Critérios de singlemale = novo e critério (solteiro, masculino); Critérios singleorfemale = novo orcriteria (solteiro, mulher); System.out.println ("machos:"); PrintPersons (Male.MeetCriteria (Pessoas)); System.out.println ("/nfemales:"); PrintPersons (feminino.meetCriteria (pessoas)); System.out.println ("/NSingle Machos:"); PrintPersons (SingleMale.MeetCriteria (Pessoas)); System.out.println ("/nsingle ou fêmeas:"); PrintPersons (singleorfemale.meetCriteria (pessoas)); } public static void PrintPersons (List <Pesso> Pessoas) {for (pessoa da pessoa: pessoas) {System.out.println ("Pessoa: [Nome:" + Person.getName () + ", gênero:" + Person.getGender () + ", Status Marital:" + Person.getMaritalStatus () + "]; }}}Etapa 5
Verifique a saída.
Machos: Pessoa: [Nome: Robert, Gênero: Masculino, Estado Civil: Single] Pessoa: [Nome: João, Gênero: Masculino, Estado Civil: Casado] Pessoa: [Nome: Mike, Gênero: Macho, Estado -Civil Single ]Single Males: Person : [ Name : Robert, Gender : Male, Marital Status : Single ]Person : [ Name : Mike, Gender : Male, Marital Status : Single ]Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]Single Or Females: Person : [ Name : Robert, Gender : Male, Marital Status : Single ]Person : [ Name : Diana, Gender : Female, Marital Status : Single ]Person : [ Name : Mike, Gender : Male, Estado civil: solteiro] Pessoa: [Nome: Bobby, Gênero: Masculino, Estado Civil: Single] Pessoa: [Nome: Laura, Gênero: Feminino, Estado Civil: Casado]
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!