[์๋ฐ] ์ดํฉํฐ๋ธ์๋ฐ : 2. ์์ฑ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋๋ฅผ ๊ณ ๋ คํด๋ผ
class A{
public A(int a, int b, int c){
this.a = a;
this.b = b;
this.c = c;
}
public A(int a, int b){
this(a,b,0);
}
}
A a = new A.Builder('ae').korean('์์ด').build();
NyPizza pizza = new NyPizza.Builder(SMALL).addTopping(SAUSAGE).addTopping(ONION).build();
Calzone calzone = new Calzone.Builder().addTopping(HAM).sauceInside().build();
public abstract class Pizza {
public enum Toping {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();
protected abstract T self();
}
Pizza(Builder<?> builder){toppings = builder.toppings.clone();}
}
์์ฒ๋ผ ๊ตฌํ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์, ์์ ๊ด๊ณ์์ ๋น๋ ํจํด ์ ์ฉ์๋ ๋ฌธ์ ๊ฐ ์๋ค.
public abstract class Pizza {
public enum Toping {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 **Builder<T>** addTopping(Topping topping){
toppings.add(Objects.requireNonNull(topping));
return **this**;
}
abstract Pizza build();
protected abstract T self();
}
Pizza(Builder<?> builder){toppings = builder.toppings.clone();}
}
| [์๋ฐ] ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์ (0) | 2025.03.27 |
|---|---|
| [JAVA] Random vs SecureRandom vs ThreadLocalRandom (0) | 2024.12.26 |
| [์๋ฐ] Collections API : TreeMap (0) | 2024.10.22 |
| [Java] Reflection (0) | 2024.01.06 |
| [Java] Exception, try-catch-finally, try-with-resources (0) | 2023.12.24 |