Q:

OO pattern for dividing a collection into groups

I have a list of MyObjects which I need to divide into three groups:

Known good (keep)
Known bad (reject)
Unrecognized (raise alert)

MyObject contains various properties which must be examined to determine which of the 3 groups to put the object in.
My initial implementation (Java) just takes a List in its constructor and does the triage there. Pseudocode:
class MyObjectFilterer {
  public MyObjectFilterer(List<MyObject> list) {
    // triage items here
  }
  public List<MyObject> getGood() {
    // return sub-list of good items
  }
  public List<MyObject> getBad() {
    // return sub-list of bad items
  }
  public List<MyObject> getUnrecognized() {
    // return sub-list of unrecognized items
  }
}

Any issues with this implementation? Is there a better OO choice?

A:

I would probably prefer a static factory method to do the filtering, that then calls a private constructor that takes the three filtered lists, following the good code practice of never doing any serious work in a constructor.  Other than that, this looks fine.

