Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Builder pattern for class hierarchies
- public abstract class Pizza {
- public enum Topping { HAM, MUSHROOM, ONION, PEPPER, SAUSAGE }
- final Set<Topping> toppings;
- abstract static class Builder<T extends Builder<T>> {
- EnumSet<Topping> toppings = EnumSet.noneOf(Topping.class);
- public T addTopping(Topping topping) {
- toppings.add(Objects.requireNonNull(topping));
- return self();
- }
- abstract Pizza build();
- // Subclasses must override this method to return "this"
- protected abstract T self();
- }
- Pizza(Builder<?> builder) {
- toppings = builder.toppings.clone(); // See Item 50
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement