π‘ 1995λ GoF(Gang of Four)λΌκ³ λΆλ¦¬λ Erich Gamma, Richard Helm, Ralph Johnson, John Vissidesκ° μ²μμΌλ‘ λμμΈ ν¨ν΄μ ꡬ체ννμλ€.GoFμ λμμΈ ν¨ν΄μ μννΈμ¨μ΄ 곡νμμ κ°μ₯ λ§μ΄ μ¬μ©λλ λμμΈ ν¨ν΄μ΄λ€.λͺ©μ μ λ°λΌ λΆλ₯ν μ μμ± ν¨ν΄ 5κ°, ꡬ쑰ν¨ν΄ 7κ°, νμ ν¨ν΄ 11κ° μ΄ 23κ°μ ν¨ν΄μΌλ‘ ꡬμ±λλ€.
π€·βοΈGoF λμμΈ ν¨ν΄
GoFλμμΈ ν¨ν΄μ λΆλ₯νλ κΈ°μ€μ λ κ°μ§μ΄λ€.
- λͺ©μ μ λ°λΌ λΆλ₯νλ©΄ μμ± ,ꡬ쑰, νλ 3κ°μ§λ‘ λλ μ μλ€. κ°κ°μ ν¨ν΄μ΄ μ΄λ€ μΌμ νκΈ° μν κ²μΈμ§μ κ΄ν κ²μ΄λ€. μμ± ν¨ν΄μ κ°μ²΄μ μμ± κ³Όμ μ κ΄μ¬, ꡬ쑰 ν¨ν΄μ κ°μ²΄μ ν©μ±μ κ΄μ¬, νλ ν¨ν΄μ κ°μ²΄κ° μνΈ μμ©νλ λ°©λ²μ΄λ κ΄μ¬μ¬λ₯Ό λΆλ¦¬νλ λ°©λ²μ΄λ€.
- λ²μμ λ°λΌ λΆλ₯λ κ°λ₯νλ€. ν¨ν΄μ μ£Όλ‘ ν΄λμ€μ μ μ©νλμ§, κ°μ²΄μ μ μ©νλ μ§ κ΅¬λΆνλ κ²μ΄λ€. ν΄λμ€ ν¨ν΄μ ν΄λμ€μ μλΈ ν΄λμ€ κ°μ κ΄λ Ήμ±μ λ€λ£¬λ€. μ£Όλ‘ μμμ ν΅ν΄ κ΄λ ¨λλ©°, μ»΄νμΌ νμμ μ μ μΌλ‘ κ²°μ λλ€. κ°μ²΄ ν¨ν΄μ κ°μ²΄ κ°μ κ΄λ ¨μ±μ λ€λ£¨κ³ , λ°νμμ λ³κ²½λ μ μλ λμ μΈ μ±κ²©μ κ°μ§λ€.
π¨μμ± ν¨ν΄
μμ± ν¨ν΄μ κ°μ²΄μ μμ±κ³Ό κ΄λ ¨λ ν¨ν΄μ΄λ€. κ°μ²΄μ μΈμ€ν΄μ€ κ³Όμ μ μΆμννλ λ°©λ²μ΄λ€. κ°μ²΄μ μμ±κ³Ό μ°Έμ‘° κ³Όμ μ μΊ‘μννλ©° κ°μ²΄κ° μμ±λκ±°λ λ³κ²½λμ΄λ νλ‘κ·Έλ¨ κ΅¬μ‘°μ μν₯μ λ°μ§ μλλ‘ νμ¬ νλ‘κ·Έλ¨μ μ μ°μ±μ λν΄μ€λ€.μμ± ν΄λμ€ ν¨ν΄μ κ°μ²΄λ₯Ό μμ±νλ μΌλΆλ₯Ό μλΈ ν΄λμ€κ° λ΄λΉνλλ‘ νλ©°, μμ± κ°μ²΄ ν¨ν΄μ κ°μ²΄ μμ±μ λ€λ₯Έ κ°μ²΄μκ² μμνλ€.
μΆμ ν©ν 리(Abstract Factory) | ꡬ체μ μΈ ν΄λμ€λ₯Ό μ§μ νμ§ μκ³ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μλ‘ μ°κ΄λλ κ°μ²΄λ€μ κ·Έλ£ΉμΌλ‘ ννν¨ |
λΉλ(Builder) | λ³΅ν© κ°μ²΄μ μμ±κ³Ό ννμ λΆλ¦¬νμ¬ λμΌν μμ± μ μ°¨μμλ λ€λ₯Έ νν κ²°κ³Όλ₯Ό λ§λ€μ΄λΌ μ μμ |
ν©ν 리 λ©μλ(Factory Method) | κ°μ²΄ μμ±μ μλΈν΄λμ€λ‘ μμνμ¬ μΊ‘μνν¨ |
νλ‘ν νμ (Prototype) | μλ³Έ κ°μ²΄λ₯Ό 볡μ¬ν¨μΌλ‘μ¨ κ°μ²΄λ₯Ό μμ±ν¨ |
μ±κΈν€(Singleton) | μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λ νλμμ 보μ₯νκ³ μ΄λμλ μ°Έμ‘°ν μ μλλ‘ ν¨ |
π¨κ΅¬μ‘° ν¨ν΄
ꡬ쑰 ν¨ν΄μ ν΄λμ€λ κ°μ²΄λ€μ μ‘°ν©ν΄ λ ν° κ΅¬μ‘°λ‘ λ§λ€ μ μκ² ν΄μ£Όλ ν¨ν΄μ΄λ€. ꡬ쑰 ν΄λμ€ ν¨ν΄μ μμμ ν΅ν΄ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό ν©μ±νκ³ , ꡬ쑰 κ°μ²΄ ν¨ν΄μ κ°μ²΄λ₯Ό ν©μ±νλ λ°©λ²μ μ μνλ€.
μ΄λν°(Adapter) | ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λ€λ₯Έ μΈν°νμ΄μ€λ‘ λ³ννμ¬ λ€λ₯Έ ν΄λμ€κ° μ΄μ©ν μ μλλ‘ ν¨ |
λΈλ¦¬μ§(Bridge) | ꡬνλΆμμ μΆμμΈ΅μ λΆλ¦¬νμ¬ κ°μ λ 립μ μΌλ‘ νμ₯ν μ μκ² ν¨ |
μ»΄ν¬μ§νΈ(Composite) | κ°μ²΄λ€μ κ΄κ³λ₯Ό νΈλ¦¬ κ΅¬μ‘°λ‘ κ΅¬μ±νμ¬ λ³΅ν© κ°μ²΄μ λ¨μΌ κ°μ²΄λ₯Ό ꡬλΆμμ΄ λ€λ£Έ |
λ°μ½λ μ΄ν°(Decorator) | μ£Όμ΄μ§ μν© λ° μ©λμ λ°λΌ μ΄λ€ κ°μ²΄μ λ€λ₯Έ κ°μ²΄λ₯Ό λ§λΆμ΄λ λ°©μ |
νΌμΈλ(Facade) | μλΈμμ€ν μ μλ μΈν°νμ΄μ€ μ§ν©μ λν΄ νλμ ν΅ν©λ μΈν°νμ΄μ€(Wrapper) μ 곡 |
νλΌμ΄μ¨μ΄νΈ(Flyweight) | ν¬κΈ°κ° μμ μ¬λ¬ κ°μ κ°μ²΄λ₯Ό λ§€λ² μμ±νμ§ μκ³ κ°λ₯ν ν 곡μ ν μ μλλ‘ νμ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν¨ |
νλ‘μ(Proxy) | μ κ·Όμ΄ μ΄λ €μ΄ κ°μ²΄λ‘μ μ κ·Όμ μ μ΄νκΈ° μν΄ κ°μ²΄μ Surrogateλ Placeholderλ₯Ό μ 곡 |
π¨νμ ν¨ν΄
νμ ν¨ν΄μ ν΄λμ€λ κ°μ²΄λ€μ΄ μλ‘ μνΈμμ©νλ λ°©λ²μ΄λ μ΄λ€ νμ€ν¬, μ΄λ€ μκ³ λ¦¬μ¦μ μ΄λ€ κ°μ²΄μ ν λΉνλ κ²μ΄ μ’μμ§λ₯Ό μ μνλ ν¨ν΄μ΄λ€. μ¦, κ°μ²΄λ ν΄λμ€μ κ΅λ₯ λ°©λ²μ λν΄ μ μνλ κ²μ΄λ€. νμ ν¨ν΄μ νλμ κ°μ²΄λ‘ μνν μ μλ μμ μ μ¬λ¬ κ°μ²΄λ‘ λΆλ°°νλ©΄μ κ·Έλ€ κ°μ κ²°ν©λλ₯Ό μ΅μν ν μ μλλ‘ λμμ€λ€. νμ ν΄λμ€ ν¨ν΄ μ μμμ ν΅ν΄ μκ³ λ¦¬μ¦κ³Ό μ μ΄ νλ¦μ κΈ°μ νκ³ , νμ κ°μ²΄ ν΄ν΄ μ νλμ μμ μ μννκΈ° μν΄ κ°μ²΄ μ§ν©μ΄ μ΄λ»κ² νλ ₯νλμ§λ₯Ό κΈ°μ νλ€.
μ± μ μ°μ(Chain of Responsibility) | μμ²μ λ°λ κ°μ²΄λ₯Ό μ°μμ μΌλ‘ λ¬Άμ΄ μμ²μ μ²λ¦¬νλ κ°μ²΄λ₯Ό λ§λ λκΉμ§ κ°μ²΄ Chainμ λ°λΌ μμ²μ μ λ¬ν¨ |
컀맨λ(Command) | μμ²μ κ°μ²΄μ ννλ‘ μΊ‘μννμ¬ μ¬μ¬μ©νκ±°λ μ·¨μν μ μλλ‘ μ μ₯ν¨ |
μΈν°ν리ν°(Interpreter) | νΉμ μΈμ΄μ λ¬Έλ² ννμ μ μν¨ |
λ°λ³΅μ(Iterator) | λ΄λΆλ₯Ό λ ΈμΆνμ§ μκ³ μ κ·Όμ΄ μ¦μ μ΄λ€ κ°μ²΄μ μμλ₯Ό μμ°¨μ μΌλ‘ μ κ·Όν μ μλ λμΌν μΈν°νμ΄μ€ μ 곡 |
μ€μ¬μ(Mediator) | ν μ§ν©μ μν΄μλ κ°μ²΄λ€μ μνΈμμ©μ μΊ‘μννμ¬ μλ‘μ΄ κ°μ²΄λ‘ μ μ |
λ©λ©ν (Memento) | κ°μ²΄κ° νΉμ μνλ‘ λ€μ λλμμ¬ μ μλλ‘ λ΄λΆ μνλ₯Ό μ€μ²΄ν |
μ΅μλ²(Observer) | κ°μ²΄ μνκ° λ³ν λ κ΄λ ¨ κ°μ²΄λ€μ΄ κ·Έ λ³νλ₯Ό ν΅μ§λ°κ³ μλμΌλ‘ κ°±μ λ μ μκ² ν¨ |
μν(State) | κ°μ²΄μ μνμ λ°λΌ λμΌν λμμ λ€λ₯΄κ² μ²λ¦¬ν΄μΌν λ μ¬μ© |
μ λ΅(Strategy) | λμΌ κ³μ΄μ μκ³ λ¦¬μ¦κ΅°μ μ μνκ³ μΊ‘μννμ¬ μνΈκ΅νμ΄ κ°λ₯νλλ‘ ν¨ |
ν νλ¦Ώ λ©μλ(Template Method) | μμν΄λμ€λ μκ³ λ¦¬μ¦μ 골격λ§μ μμ±νκ³ κ΅¬μ²΄μ μΈ μ²λ¦¬λ μλΈν΄λμ€λ‘ μμν¨ |
λ°©λ¬Έμ(Visitor) | κ°μ²΄μ μμμ λν΄ μνν μ°μ°μ λΆλ¦¬νμ¬ λ³λμ ν΄λμ€λ‘ ꡬμ±ν¨ |
'Dev > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
ποΈ GC(Garbage Collection) - μ°λ κΈ°ν΅ νν΄μΉκΈ° (0) | 2024.09.19 |
---|---|
[JAVA]λ°λ³΅λ¬Έ μμμ List μμ μμ (0) | 2022.03.04 |
[Code] Refactoring , 리νν λ§ (0) | 2022.02.28 |
[Design Pattern] λΉλ ν¨ν΄(Builder Pattern) (0) | 2021.12.02 |
[JAVA]Optionalμ΄λ? (0) | 2021.06.17 |