λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ‘©‍πŸ’» Learn programming

[⚑] λ””μžμΈ νŒ¨ν„΄ μœ ν˜•

by 밍κ΅₯μž‰ 2022. 5. 6.
λ°˜μ‘ν˜•

1. 생성 (μƒλΉŒ ν”„λ‘œ νŒ©μ•±μ‹±)

- λΉŒλ”(builder)

: λ³΅μž‘ν•œ μΈμŠ€ν„΄μŠ€λ₯Ό μ‘°ν•©ν•˜μ—¬ λ§Œλ“œλŠ” ꡬ쑰, 생성과 ν‘œκΈ°λ₯Ό λΆ„λ¦¬ν•΄μ„œ λ³΅μž‘ν•œ 객체λ₯Ό 생성

- ν”„λ‘œν† νƒ€μž…(prototype)

: 생성할 객체의 μ’…λ₯˜λ₯Ό λͺ…μ‹œν•˜λŠ”λ° μ›ν˜•μ— λ˜λŠ” μ˜ˆμ‹œλ¬Όμ„ μ΄μš”ν•˜κ³  μƒˆλ‘œμš΄ 객체λ₯Ό 이 μ›ν˜•λ“€γ„Ήμ„ λ³΅μ‚¬ν•¨μœΌλ‘œμ¨ μƒμ„±ν•˜λŠ” νƒ€μž….

- νŒ©ν† λ¦¬ λ©”μ†Œλ“œ(Factory method)

: 객체λ₯Ό μƒμ„±ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•˜μ§€λ§Œ, μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“œλŠ” ν΄λž˜μŠ€λŠ” μ„œλΈŒν΄λž˜μŠ€μ—μ„œ κ²°μ •ν•˜λ„λ‘ ν•˜λŠ” νŒ¨ν„΄.

- μ•±μŠ€νŠΈλž™νŠΈ νŒ©ν† λ¦¬(Abstract Factory)

: ꡬ체적인 클래슀 μ§€μ •ν•˜μ§€ μ•Šκ³  관련성이 μžˆκ±°λ‚˜ 독립적인 객체듀을 μƒμ„±ν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ 제곡

- 싱글톀(Single ton)

: 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ ν•˜λ‚˜μž„μ„ 보μž₯ν•˜κ³  μ ‘κ·Όν•  수 μžˆλŠ” 전역적인 접근점을 μ œκ³΅ν•˜λŠ” νŒ¨ν„΄

 

 

2. ꡬ쑰 (ꡬ 브데 프둝 νΌν”Œ μ»΄ μ–΄)

- λΈŒλ¦Ώμ§€(bridge)

: 좔상계측을 λΆ„λ¦¬ν•˜μ—¬ μΆ”μƒν™”λœ λΆ€λΆ„κ³Ό μ‹€μ œ κ΅¬ν˜„λΆ€λΆ„μ„ λ…λ¦½μ μœΌλ‘œ ν™•μž₯ν•  수 μžˆλŠ” λ””μžμΈ νŒ¨ν„΄

- λ°μ½”λ ˆμ΄ν„°(decorator)

: 객체의 결합을 톡해 κΈ°λŠ₯을 λ™μ μœΌλ‘œ μœ μ—°ν•˜κ²Œ ν™•μž₯

- ν”„λ‘μ‹œ(proxy)

: νŠΉμ • 객체둜의 접근을 μ œμ–΄ν•˜κΈ° μœ„ν•œ μš©λ„

- νΌμ‚¬μ΄λ“œ(facade)

: λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ— λŒ€ν•˜μ—¬ λ‹¨μˆœν•œ μΈν„°νŽ˜μ΄μŠ€ 제곡, ν†΅ν•©λœ μΈν„°νŽ˜μ΄μŠ€ 제곡

- ν”ŒλΌμ΄μ›¨μ΄νŠΈ(flyweight)

: μ—¬λŸ¬κ°œμ˜ '가상 μΈμŠ€ν„΄μŠ€'λ₯Ό μ œκ³΅ν•˜μ—¬ λ©”λͺ¨λ¦¬ 절감

- μ»΄ν¬μ§€νŠΈ(composite)

: 볡합 객체와 단일 객체λ₯Ό λ™μΌν•˜κ²Œ μ·¨κΈ‰

- μ–΄λŒ‘ν„°(adapter)

: κΈ°μ‘΄ 생성 클래슀λ₯Ό μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ μ€‘κ°„μ—μ„œ λ§žμΆ°μ£ΌλŠ” 역할을 ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€

 

 

3. ν–‰μœ„ (ν–‰ 미인이 ν…œμ˜΅ μŠ€ν…Œ 비컀 슀트 메체) 

- 메디에이터(mediator)

: μƒν˜Έμž‘μš©μ˜ μœ μ—°ν•œ 변경을 지원, 객체지ν–₯의 λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κ²Œ ν•΄μ€Œ

- 인터프리터(interpreter)

: 주어진 언어에 λŒ€ν•΄μ„œ 문법을 μœ„ν•œ ν‘œν˜„ μˆ˜λ‹¨μ„ μ •μ˜, μ–Έμ–΄ 해석기

- μ΄ν„°λ ˆμ΄ν„°(Iterator)

: λ‚΄λΆ€ ν‘œν˜„λΆ€λ₯Ό λ…ΈμΆœν•˜μ§€ μ•Šκ³  μ–΄λ–€ 객체 μ§‘ν•©μ˜ μ›μ†Œλ₯Ό 순차적으둜 μ ‘κ·Όν•  수 μžˆλŠ” 방법 제곡

- ν…œν”Œλ¦Ώ(template)

: 객체의 μ—°μ‚°μ—μ„œ μ•Œκ³ λ¦¬μ¦˜μ˜ λΌˆλŒ€λ§Œ μ •μ˜ν•˜κ³ , λ‚˜λ¨Έμ§€λŠ” μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ΄λ£¨μ–΄μ§€κ²Œ ν•˜λŠ” νŒ¨ν„΄

- μ˜΅μ Έλ²„(Observer)

: 객체듀 사이에 1:N의 μ˜μ‘΄κ΄€κ³„λ₯Ό μ •μ˜ν•˜μ—¬, 의쑴 κ΄€κ³„μ˜ 객체듀이 톡지받지 μ•Šκ³  μžλ™μœΌλ‘œ 갱신됨

- μŠ€ν…Œμ΄νŠΈ(state)

: 객체의 λ‚΄λΆ€ μƒνƒœκ°€ 변경될 λ•Œ 행동을 λ³€κ²½ν•˜λ„λ‘ ν—ˆλ½.

- 비지터(visitor)

: 객체ꡬ쑰λ₯Ό μ΄λ£¨λŠ” μ›μ†Œμ— λŒ€ν•΄ μˆ˜ν–‰ν•  연산을 ν‘œν˜„ν•¨.

- μ»€λ§¨λ“œ(command)

: μš”μ²­μ„ 객체둜 μΊ‘μŠν™”ν•˜μ—¬ μ„œλ‘œ 닀은 μ‚¬μš©μžμ˜ λ§€κ°œλ³€μˆ˜ν™”, μš”μ²­ μ €μž₯ λ˜λŠ” λ‘œκΉ…, μ—°μ‚°μ˜ 취둜λ₯Ό μ§€μ›ν•˜κ²Œ λ§Œλ“œλŠ” νŒ¨ν„΄

- μŠ€νŠΈλ ˆν‹°μ§€(strategy)

: λ™μΌν•œ κ³„μ—΄μ˜ μ•Œκ³ λ¦¬μ¦˜λ“€μ„ μ •μ˜ν•˜κ³  각각 μΊ‘μŠν™”ν•˜μ—¬ 이듀을 μƒν˜Έκ΅ν™˜ν•˜κ²Œ λ§Œλ“¬.

- λ©”λ©˜ν† (memento)

: 객체λ₯Ό 이전 μƒνƒœλ‘œ λ³΅κ΅¬μ‹œμΌœμ•Όν•˜λŠ” 경우.

- 체인 였브 λ¦¬μŠ€νŒμ„œλΉŒλ¦¬ν‹°(chain of responsibility)

: μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” 기회λ₯Ό ν•˜λ‚˜ μ΄μƒμ˜ 객체에 λΆ€μ—¬ν•˜μ—¬ μš”μ²­μ„ λ³΄λ‚΄λŠ” μͺ½κ³Ό λ°›λŠ” μͺ½μ˜ 결합을 ν”Όν•˜λŠ” νŒ¨ν„΄.

 

λ°˜μ‘ν˜•