๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ฑ์,์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋,Builder๋ฅผ์ฌ์ฉํ๋ค.
๋ณดํต ๊ฐ์ฒด ์์ฑ์ด ๋จ์ํ ๋๋ ๋จ์ํ ์์ฑ์๋ฅผ ์ฌ์ฉํ๊ณ , ๊ฐ์ฒด ์์ฑ์ด ๋ณต์กํ๋ฉฐ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ๊ฒ์ด ์ข๋ค๋ฉด
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ Builder ํจํด์ ์ฌ์ฉํด ์์ฑ์๋ฅผ private์ฒ๋ฆฌํ๋ค.
๊ทธ๋ผ ์์ฑ์๋ ๋ค๋ค ์ ์๋๊น ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ Builder์ ์ง์คํด์ ์ค๋ช ํด๋ณด๋ คํ๋ค.
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋
์์ฑ์์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ตฌ๋ณํด์ ์ค๋ช ํ์๋ฉด
public class Product{
private String name;
public Product(String name){
this.name=name;
}
public static Product nameOf(String name){
return new Product(name);
}
๐ ์ฅ์
1. ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ ์ด๋ฆ์ ๊ฐ์ง๋ค.
Fruit fruit = new Fruit(apple); // ์์ฑ์
Fruit fruit = Fruit.createApple(); // ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋
2. ํธ์ถํ ๋ ๋ง๋ค ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค.
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
์์๊ฐ b์ ๋ฐ๋ผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ TRUE,FALSE ์ค ํ๋์ ๊ฐ์ ๋ฆฌํดํ๋ค.
์ด๋ ๊ฒ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ์ธ์คํด์ค ๋ฐํํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ธ๋ค.
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ ๋ณ์๊ฐ ๋์ด๋ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์์ผ๋ฉฐ ๋ณ์์ ๊ฐ์๊ฐ 2๊ฐ์ดํ์ธ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ถ์ฒํ๋ค๊ณ ํ๋ค.
๐ช ๋จ์
1. ์์ฑ์ ์์ด ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ง ์ ๊ณตํ๋ค๋ฉด ์์์ด ๋ถ๊ฐ๋ฅ
์์ํ๋ ค๋ฉด public,protected ์์ฑ์๊ฐ ํ์ํ๋ฐ ์ด๋ฐ ์ ๋ค ์์ด ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ง ์ ๊ณตํ๋ค๋ฉด ์์ ๋ถ๊ฐ๋ฅ!!
[ Java ] 28. ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋?!
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ธ์คํด์ค๋ฅผ ์๋ก ์์ฑํ ๋๋ ๋ณดํต ์์ฑ์๋ฅผ ์ด์ฉํ๋ค. ๋ณดํต ์ค์ ๊ฐ๋ฐ์ ๊ฐ๋ฉด public ์์ฑ์(ํน์ ๋น๋ํจํด)๋ฅผ ์ฃผ๋ก ์ด์ฉํด์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ณด๋ค ์ข ๋ ๋์ ๋ฐฉ
coder-in-war.tistory.com
Builder
๋ง์ฝ ์ ์ ํฉํ ๋ฆฌ๋ฉ์๋์ ์์ฑ์์ ์ ํ์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง๋ค๋ฉด(๋ฐ๋์ ์ด๊ธฐํํ ํ์๊ฐ ์๋ ๋งค๊ฐ๋ณ์)
Builder๋ฅผ ์ฐ๋๊ฒ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋น๋ ํจํด์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ฐํ๊ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋๋ก ํด์ค๋ค๋ ์ ์ด๋ค!
public class User {
private String name;
private int age;
private int height;
private int iq;
//์์ฑ์
public User (String name, int height, int iq) {
this.name = name;
this.height = height;
this.iq = iq;
}
//์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋
public static User of(String name, int height, int iq) {
return new User(name, 0, 180, 150);
}
}
์ถ์ฒ: https://mangkyu.tistory.com/163 [MangKyu's Diary:ํฐ์คํ ๋ฆฌ]
์ด๋ ๊ฒ Userํด๋์ค๊ฐ ์์๋ ๋น๋๋ฅผ ์ฌ์ฉํ๋ฉด
User user = User.builder()
.name("๋ง๋๋ ๊ฐ๋ฐ์")
.height(180)
.iq(150).build();
์ถ์ฒ: https://mangkyu.tistory.com/163 [MangKyu's Diary:ํฐ์คํ ๋ฆฌ]
์ด๋ ๊ฒ ๊ฐ๋ฅํ๋ค! ๋ฐ๋ณต์ ์ธ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ๋น๋๋ฅผ ํตํด ๋์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง ๋ 180,150์ด ๋ญ ์๋ฏธํ๋์ง ์๊ธฐ ํ๋ ๋ฐ ๋น๋๋ฅผ ์ฌ์ฉํ๋ฉด 180์ height์ด๊ตฌ๋ 150์ iq๊ตฌ๋!
๋ฅผ ์ ์ ์๋ค! (๊ฐ๋ ์ฑ์ด ๋์)
'Springboot > lecture' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[springBoot] AOP (0) | 2022.08.17 |
---|---|
[jdbc] Row Mapper๋ ?? (0) | 2022.08.06 |
[springboot] ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ๋ฆฌ (0) | 2022.08.05 |
[springboot] ์น mvc๊ฐ๋ฐ (0) | 2022.08.02 |
[springboot] ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ (0) | 2022.08.02 |