Skip to content

Instantly share code, notes, and snippets.

@pawelpluta
Last active October 8, 2020 19:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pawelpluta/ab1f4423a66fea088802a1f07e1fa891 to your computer and use it in GitHub Desktop.
Save pawelpluta/ab1f4423a66fea088802a1f07e1fa891 to your computer and use it in GitHub Desktop.
Article: The OOP has been explained wrongly to you - solution
class Laundry {
private final List<LaundryElement> allLaundry;
private Laundry(List<LaundryElement> allLaundry) {
this.allLaundry = allLaundry;
}
static Laundry of(List<LaundryElement> allLaundry) {
return new Laundry(allLaundry);
}
List<LaundryElement> asList() {
return unmodifiableList(allLaundry);
}
Laundry with(LaundryElement newLaundryElement) {
List<LaundryElement> updatedLaundry = new ArrayList<>(allLaundry);
updatedLaundry.add(newLaundryElement);
return Laundry.of(updatedLaundry);
}
Laundry withOut(List<LaundryElement> removedElements) {
List<LaundryElement> updatedLaundry = new ArrayList<>(allLaundry);
updatedLaundry.removeAll(removedElements);
return Laundry.of(updatedLaundry);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment