[Design Pattern] 6. ๋น๋ ํจํด(builder)
์นดํ ๊ณ ๋ฆฌ: Design Pattern
ํ๊ทธ: C#, Design Pattern
builderํจํด
builder
๋น๋ ํจํด (builder)
์๋์์น
- ๋ณต์กํ ๊ฐ์ฒด์ ์์ฑ ๊ณผ์ ์ ๋จ๊ณ๋ณ ๋ถ๋ฆฌ
- ๊ฐ์ฒด์ ์์ฑ๊ณผ ํํ์ ๋ถ๋ฆฌ
- ์์ฑํ๋ ๊ณผ์ ์์ ์๋ก ๋ค๋ฅธ ํํ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ
- ๋ณต์กํ ๊ฒ์์ค๋ธ์ ํธ, ๋์ด๋์กฐ์ ํ ๋ ์ฌ์ฉ(๋งตํํ, ๋ชน์)
builder ์ฝ๋๋ณด๊ธฐ
// ๋น๋ ์ธํฐํ์ด์ค
public interface IBuilder
{
void BuildPartA();
void BuildPartB();
void BuildPartC();
GameObject GetResult();
}
// ๋น๋ ํด๋์ค
public class ConcreteBuilder : IBuilder
{
private GameObject gameObject = new GameObject();
public void BuildPartA()
{
// ๊ฐ์ฒด์ ์ผ๋ถ๋ถ A๋ฅผ ๊ตฌ์ถ (์: ์บ๋ฆญํฐ ๋ชจ๋ธ ์ถ๊ฐ)
}
public void BuildPartB()
{
// ๊ฐ์ฒด์ ์ผ๋ถ๋ถ B๋ฅผ ๊ตฌ์ถ (์: ์บ๋ฆญํฐ ์ ๋๋ฉ์ด์
์ค์ )
}
public void BuildPartC()
{
// ๊ฐ์ฒด์ ์ผ๋ถ๋ถ C๋ฅผ ๊ตฌ์ถ (์: ์บ๋ฆญํฐ ๋ฅ๋ ฅ์น ์ค์ )
}
public GameObject GetResult()
{
return gameObject;
}
}
// ๊ฒ์ ์ค๋ธ์ ํธ ํด๋์ค
public class GameObject
{
// ๊ฒ์ ์ค๋ธ์ ํธ ๊ด๋ จ ์์ฑ ๋ฐ ๋ฉ์๋
}
// ๋น๋ ์ฌ์ฉ
IBuilder builder = new ConcreteBuilder();
builder.BuildPartA();
builder.BuildPartB();
builder.BuildPartC();
GameObject player = builder.GetResult();
์ก๋ด, ์ ๋ฆฌ
- ๋์์ธ ํจํด์ ์ ์ด์ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ๋ ค๋ ๊ฒ.(์ฑ๋ฅ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ณ ๋ ค)
- ์ถ๊ฐ ๋ด์ฉ ์ ๋ฆฌ
[C#] ๋์์ธ ํจํด (Design Pattern)
TOP
๋๊ธ๋จ๊ธฐ๊ธฐ