Prototype ํจํด๐ก ํด๋์ค์์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋์ ์ธ์คํด์ค๋ก๋ถํฐ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์์ฑ์ข
๋ฅ๊ฐ ๋๋ฌด ๋ง์ ํด๋์ค๋ก ์ ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ์ทจ๊ธํ ์ค๋ธ์ ํธ์ ์ข
๋ฅ๊ฐ ๋ง์์ ์์ค ํ์ผ์ ๋ง์ด ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐํด๋์ค๋ก๋ถํฐ ์ธ์คํด์ค ์์ฑ์ด ์ด๋ ค์ด ๊ฒฝ์ฐ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ง๋ค์ด์ง๋ ๊ฒ์ผ๋ก ํด๋์ค๋ก๋ถํฐ ๋ง๋ค๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ค์ด ๊ฒฝ์ฐ์ฌ์ฉ์ ์กฐ์์ผ๋ก ๋ง๋ค์ด์ง ์ธ์คํด์ค์ ๊ฐ์ ๊ฒ์ ๋ค์ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐโ
ํ์ฌ ๋ง๋ ์ธ์คํด์ค๋ฅผ ์ผ๋จ ์ ์ฅํด๋๊ณ ๋ง๋ค๊ณ ์ถ์ ๋ ์ด๋ฅผ ๋ณต์ฌํ์ฌ ์์ฑํ๋ ์์ํฌ์ ์์ฑํ๋ ์ธ์คํด์ค๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ํ๋ ์์ํฌ๋ฅผ ํน์ ํด๋์ค์ ์์กดํ์ง ์๊ฒ ํ๊ณ ์ถ์ ๊ฒฝ์ฐโ
๋ฏธ๋ฆฌ ์ํ์ด ๋ ์ธ์คํด์ค๋ฅผ ๋ฑ๋กํด๋๊ณ , ๋ฑ๋ก๋ ์ธ์คํด์ค๋ฅผ ๋ณต์ฌํ์ฌ ์์ฑ Prototype(์ํ)์ธ์คํด์ค๋ฅผ ๋ณต์ฌํ์ฌ ..
๐ Study/๋์์ธ ํจํด
Singleton ํจํด ๐ก ์ธ์คํด์ค๊ฐ ํ๋๋ง ์กด์ฌํ๋ ๊ฒ์ ๋ณด์ฆํ๋ ํจํด ๋ฑ์ฅ์ธ๋ฌผ Singleton ์ ์ผํ ์ธ์คํด์ค๋ฅผ ์ป๊ธฐ ์ํ `static` ๋ฉ์๋๋ฅผ ๊ฐ์ง → ํญ์ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๋ฐํ public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { System.out.println("์ธ์คํด์ค ์์ฑ") } public stgatic Singleton getInstance() { return singletone; } } Singleton ํด๋์ค ๋ก๋ํ ๋ ์ด๊ธฐํ ์งํ `private` ์์ฑ์ : ์ธ๋ถ์์ ์์ฑ์ ํธ์ถ์ ๊ธ์งํ๊ธฐ ์ํจ `getInstance()`: ์ ์ผํ ์ธ์คํด์ค๋ฅผ ์ป๋ ๋ฉ..

Factory Method Factory Method ํจํด ๐ก ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ณต์ฅ์ Template Method ํจํด์ผ๋ก ๊ตฌ์ฑํ ๊ฒ ์ธ์คํด์ค์ ์์ฑ ๋ฐฉ๋ฒ์ ์์ ํด๋์ค์์ ๊ฒฐ์ ํ๋, ๊ตฌ์ฒด์ ์ธ ํด๋์ค ์ด๋ฆ๊น์ง ๊ฒฐ์ ํ์ง ์์ ๊ตฌ์ฒด์ ์ธ ์ด์ ๋ชจ๋ ํ์ ํด๋์ค์์ ๊ฒฐ์ ! ⇒ ์ธ์คํด์ค ์์ฑ์ ์ํ ํ๋ ์์ํฌ์ ์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ํด๋์ค๋ฅผ ๋๋ ์ ์์ ๋ฑ์ฅ์ธ๋ฌผ Product (์ ํ) ํ๋ ์์ํฌ package ์์ฑ๋๋ ์ธ์คํด์ค๊ฐ ๊ฐ์ ธ์ผ ํ ์ธํฐํ์ด์ค(API)๋ฅผ ๊ฒฐ์ ํ๋ ์ถ์ ํด๋์ค ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ํ์ ํด๋์ค `ConcreteProduct` ์์ ๊ฒฐ์ package framework; public abstract class Product { public abstract void use(); } Creat..
Template Method ํจํด ๐ก ์์ ํด๋์ค์์ ์ฒ๋ฆฌ์ ๋ผ๋๋ฅผ ๊ฒฐ์ ํ๊ณ ํ์ ํด๋์ค์์ ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ๊ฒฐ์ ๋ฑ์ฅ์ธ๋ฌผ `AbstractClass` (์ถ์ ํด๋์ค) ํ
ํ๋ฆฟ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉฐ, ํ
ํ๋ฆฟ ๋ฉ์๋์์ ์ฌ์ฉํ ์ถ์ ๋ฉ์๋๋ฅผ ์ ์ธ ์ถ์ ๋ฉ์๋๋ ํ์ ํด๋์ค์ธ `ConcreteClass` ์์ ๊ตฌํ public abstract class AbstractDisplay { // ํ์ ํด๋์ค์ ๊ตฌํ์ ๋งก๊ธฐ๋ ์ถ์ ๋ฉ์๋ public abstract void open(); public abstract void print(); public abstract void close(); // AbstractDisplay์์ ๊ตฌํํ๋ ๋ฉ์๋ -> ํ
ํ๋ฆฟ ๋ฉ์๋ public final void display() { ..