item 2 sungjaeyoon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
์์ฑ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋๋ฅผ ๊ณ ๋ คํ๋ผ.
์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ ์์ฑ์๋ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์ ๋ ์ ์ ํ ๋์ํ๊ธฐ ์ด๋ ต๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ค์์ 2๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋ณด์.
๊ธฐ์กด ํจํด
1.์ ์ธต์ ์์ฑ์ ํจํด - ํ์ ์์ฑ์, ์ ํ ๋งค๊ฐ๋ณ์ 1๊ฐ๋ฅผ ๋ฐ๋ ์์ฑ์, ์ ํ ๋งค๊ฐ๋ณ์ 2๊ฐ๋ฅผ ๋ฐ๋ ์์ฑ์, ..., n๊ฐ๋ฅผ ๋ฐ๋ ์์ฑ์
๋จ์ : ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ด๋ ต๊ณ ์ฝ๊ธฐ๋ ์ด๋ ต๋ค.
2.์๋ฐ๋น์ฆ ํจํด - ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ ํ ์ธํฐ๋ฅผ ์ด์ฉํด์ ๊ฒฐ์ ํ๋ ๋ฐฉ์
๋จ์ : ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ธฐ ์ ๊น์ง ์ผ๊ด์ฑ์ด ๋ฌด๋์ง ์ํ์ ๋์ด๊ฒ ๋๋ค.
๋น๋ ํจํด
ํด๋ผ์ด์ธํธ๋ ํ์ ์์ฑ์๋ฅผ ํธ์ถํด ๋น๋ ๊ฐ์ฒด๋ฅผ ์ป๊ณ ๋น๋ ๊ฐ์ฒด์ ์ธํฐ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ์ ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ค.
๊ฐ์ฒด ์ ์ธ
class NutritionFacts{
private final int servingSize;
private final int servings;
private final int calories;
private final int fat;
private final int sodium;
private final int carbohydrate;
public static class Builder{
//ํ์ ๋งค๊ฐ๋ณ์
private final int servingSize;
private final int servings;
//์ ํ ๋งค๊ฐ๋ณ์ - ๊ธฐ๋ณธ๊ฐ ์ด๊ธฐํ
private int calories=0;
private int fat=0;
private int sodium=0;
private int carbohydrate=0;
public Builder(int servingSize, int servings){
this.servingSize = servingSize;
this.servings = servings;
}
public Builder calories(int val){calories = val; return this;}
public Builder fat(int val){fat = val; return this;}
public Builder sodium(int val){sodium = val; return this;}
public Builder carbohydrate(int val){carbohydrate = val; return this;}
public NutritionFacts build(){
return new NutritionFacts(this);
}
}
private NutritionFacts(Builder builder){
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
}
ํด๋ผ์ด์ธํธ ์ฝ๋
NutritionFacts cocaCola = new NutritionFacts.Builder(240,8)
.calories(100).sodium(20).carbohydrate(27).build();
๋ค์๊ณผ ๊ฐ์ด ๋น๋ํจํด์ ์ฌ์ฉํ๋ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ฝ๋๋ฐ ์ฝ๊ธฐ๊ฐ ์ฌ์์ง๋ค.
๋น๋ ํจํด์ ์ฅ์ ๋ง ์๋ ๊ฒ์ ์๋๋ค. ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ค๋ฉด ์ด์ ์ ๋น๋ ๊ฐ์ฒด๋ฅผ ๋จผ์ ๋ง๋ค์ด์ผํ๋ค.
๋น๋ ๊ฐ์ฒด์ ์์ฑ๋น์ฉ์ด ํฌ์ง๋ ์์ง๋ง ์ฑ๋ฅ์ ๋ฏผ๊ฐํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
๋ํ ์ฝ๋๊ฐ ์ฅํฉํด์ ธ์ ๋งค๊ฐ๋ณ์๊ฐ 4๊ฐ์ด์์ ๋์ผ ๊ฐ์ด์น๋ฅผ ํ๋ค.
์ ๋ฆฌ
์์ฑ์๋ ์ ์ ํฉํฐ๋ฆฌ๊ฐ ์ฒ๋ฆฌํด์ผํ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋ํจํด์ ์ ํํ๋๊ฒ ๋ซ๋ค.