zoukankan      html  css  js  c++  java
  • 设计模式-过滤器模式

    过滤器模式简介

    定义:是一种结构性模式,允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来

    目标:将传递过来的数据进行分类处理

    实现

    代码:

      1 /**实体类**/
      2 public class Person {
      3     private String name;
      4     private String gender;
      5     private String maritalStatus;
      6      
      7     public Person(String name,String gender,String maritalStatus){
      8         this.name = name;
      9         this.gender = gender;
     10         this.maritalStatus = maritalStatus;    
     11      }
     12      
     13      public String getName() {
     14         return name;
     15      }
     16      public String getGender() {
     17         return gender;
     18      }
     19      public String getMaritalStatus() {
     20         return maritalStatus;
     21      }
     22 }
     23 
     24 /**过滤接口**/
     25 public interface Filter {
     26     public List<Person> meetCriteria(List<Person> persons);
     27 }
     28 
     29 /**具体过滤类1**/
     30 public class FilterMale implements Filter{
     31 
     32     public List<Person> meetCriteria(List<Person> persons) {
     33         // TODO Auto-generated method stub
     34         List<Person> malePersons = new ArrayList<Person>(); 
     35           for (Person person : persons) {
     36              if(person.getGender().equalsIgnoreCase("MALE")){
     37                 malePersons.add(person);
     38              }
     39           }
     40           return malePersons;
     41     }
     42 
     43 }
     44 
     45 /**具体过滤类2**/
     46 public class FilterFemale implements Filter{
     47 
     48     public List<Person> meetCriteria(List<Person> persons) {
     49         // TODO Auto-generated method stub
     50         List<Person> malePersons = new ArrayList<Person>(); 
     51           for (Person person : persons) {
     52              if(person.getGender().equalsIgnoreCase("FEMALE")){
     53                 malePersons.add(person);
     54              }
     55           }
     56           return malePersons;
     57     }
     58 
     59 }
     60 
     61 /**具体过滤类3**/
     62 public class FilterSingle implements Filter{
     63 
     64     public List<Person> meetCriteria(List<Person> persons) {
     65         // TODO Auto-generated method stub
     66         List<Person> malePersons = new ArrayList<Person>(); 
     67           for (Person person : persons) {
     68              if(person.getGender().equalsIgnoreCase("SINGLE")){
     69                 malePersons.add(person);
     70              }
     71           }
     72           return malePersons;
     73     }
     74 
     75 }
     76 
     77 /**测试类**/
     78 public class App {
     79     public static void printPersons(List<Person> persons){
     80           for (Person person : persons) {
     81              System.out.println("Person : [ Name : " + person.getName() 
     82                 +", Gender : " + person.getGender() 
     83                 +", Marital Status : " + person.getMaritalStatus()
     84                 +" ]");
     85           }
     86     }
     87     public static void main( String[] args ){
     88         List<Person> persons = new ArrayList<Person>();
     89         persons.add(new Person("Robert","Male", "Single"));
     90         persons.add(new Person("John","Male", "Married"));
     91         persons.add(new Person("Laura","Female", "Married"));
     92         persons.add(new Person("Diana","Female", "Single"));
     93         persons.add(new Person("Mike","Male", "Single"));
     94         persons.add(new Person("Bobby","SINGLE", "Single"));
     95         
     96         Filter male = new FilterMale();
     97         Filter female = new FilterFemale();
     98         Filter single = new FilterSingle();
     99    
    100         System.out.println("Males: ");
    101         printPersons(male.meetCriteria(persons));
    102    
    103         System.out.println("
    Females: ");
    104         printPersons(female.meetCriteria(persons));
    105         
    106         System.out.println("
    Single: ");
    107         printPersons(single.meetCriteria(persons));
    108     }
    109     
    110     
    111 }
    112 
    113 测试结果:
    114 Males: 
    115 Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
    116 Person : [ Name : John, Gender : Male, Marital Status : Married ]
    117 Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
    118 
    119 Females: 
    120 Person : [ Name : Laura, Gender : Female, Marital Status : Married ]
    121 Person : [ Name : Diana, Gender : Female, Marital Status : Single ]
    122 
    123 Single: 
    124 Person : [ Name : Bobby, Gender : SINGLE, Marital Status : Single ]
  • 相关阅读:
    Java中的import
    C语言中变量的理解
    C语言中变量的储存类别
    android通话流程浅析RIL层
    IOS(数据持久化1)
    IOS(CGContent画曲线)
    IOS XML的类型数据的解析
    truncate narrow string converted from unicode string
    复习:C语言中的转义字符
    Note of using static_cast
  • 原文地址:https://www.cnblogs.com/carblack/p/14145015.html
Copyright © 2011-2022 走看看