function - OO design filter shoes -


i'm not quite familiar oo design implementation. there's oo design requirement. suppose have set of shoes shoe object. need create function return set of shoes after user input filter condition, size, color, price range etc. it's possible filter condition expanded in future. how can create function least code modification in future?

filters implemented using decorator pattern. shoes problem solution like

/**   * empty default filter returns original list.   * maybe should interface.   */ public class shoefilter {       list<shoe> filter (list<shoe> shoelist) {        // default ist nothing.        return shoelist;      } }   public class sizefilter extends shoefilter {     private final shoefilter filter; // can part of      private final int minsize;      private final int maxsize;      public sizefilter (shoefilter filter, int minsize, int maxsize) {          this.filter = filter;          this.minsize = minsize;          this.maxsize = maxsize;     }      public list<shoe> filter (list<shoe> list) {        list<shoe> filteredlist = filter.filter(list); // apply original filter        // filter size     } }   public class colorfilter extends shoefilter {     private final shoefilter filter;     private final color color;       public colorfilter (shoefilter filter, color color) {          this.filter = filter;          this.color = color;     }      public list<shoe> filter(list<shoe> list) {        list<shoe> filteredlist = filter.filter(list); // apply original filter         // filter color     }  }    public static void main(string[] args) {     list<shoe> shoes = ...;     shoefilter emptyfilter = new shoefilter(); // can singleton      shoefilter filter = new sizefilter(new colorfilter(emptyfilter, color.black), 39, 41);      list<shoe> filteredlist = filter(shoes);    } 

to create filter chain can use builder.


Comments

Popular posts from this blog

css - I want to align grid in center -

Contact Form PHP Email Script -

python - SWIG function not printing output -