Skip to content

Latest commit

Β 

History

History
62 lines (38 loc) Β· 2.93 KB

FacadePattern-junha.md

File metadata and controls

62 lines (38 loc) Β· 2.93 KB

[ꡬ쑰 νŒ¨ν„΄] Facade Pattern

νΌμ‚¬λ“œ νŒ¨ν„΄μ΄λž€?

νΌμ‚¬λ“œλŠ” 클래슀 라이브러리 같은 μ–΄λ–€ μ†Œν”„νŠΈμ›¨μ–΄μ˜ λ‹€λ₯Έ μ»€λ‹€λž€ μ½”λ“œ 뢀뢄에 λŒ€ν•œ κ°„λž΅ν™”λœ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” 객체이닀.

νΌμ‚¬λ“œ νŒ¨ν„΄μ€ λ‹€μ–‘ν•œ μΈμŠ€ν„΄μŠ€λ“€μ„ ν•˜λ‚˜μ”© 직접 μ†Œμœ ν•˜μ—¬ μ‚¬μš©ν•˜μ§€ μ•Šκ³ , μΈμŠ€ν„΄μŠ€λ“€μ΄ ν˜‘λ ₯ν•˜λŠ” 과정을 κ°„λž΅ν™”λœ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ œκ³΅ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€. λ³΅μž‘ν•œ νΌμ‚¬λ“œ λ’€λ‘œ 숨기고 νΌμ‚¬λ“œλ₯Ό 톡해 κ°„μ ‘ ν˜ΈμΆœμ„ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 즉 라이브러리, ν”„λ ˆμž„μ›Œν¬μ— λŒ€ν•œ λ˜λŠ” λ‹€λ₯Έ ν΄λž˜μŠ€λ“€μ˜ λ³΅μž‘ν•œ 집합에 λŒ€ν•œ λ‹¨μˆœν™”λœ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” ꡬ쑰적 λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

νΌμ‚¬λ“œ νŒ¨ν„΄μ˜ 어원

νΌμ‚¬λ“œ νŒ¨ν„΄μ€ "건물의 정면을 μ˜λ―Έν•œλ‹€"


νΌμ‚¬λ“œ νŒ¨ν„΄μ„ μ–Έμ œ μ‚¬μš©ν•˜λ©΄ μ’‹μ„κΉŒ?

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 뢄야에 자주 μ‚¬μš©ν•œλ‹€.


주둜 νΌμ‚¬λ“œ νŒ¨ν„΄μ€ μ–Έμ œ μ‚¬μš©ν•˜λ©΄ μ’‹μ„κΉŒ?

νΌμ‚¬λ“œ νŒ¨ν„΄μ€ μ—¬λŸ¬ μΈμŠ€ν„΄μŠ€λ₯Ό μ†Œμœ ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” νƒ€μž…μ΄ μžˆλŠ” 경우 μ‚¬μš©ν•©λ‹ˆλ‹€. 쉽고 κ°„λ‹¨ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•΄μ„œ μΈμŠ€ν„΄μŠ€λ“€μ΄ 일을 ν•˜κ²Œλ” ν•˜κ³  싢을 경우 μ‚¬μš©ν•˜λŠ” 쒋은 λ°©λ²•μž…λ‹ˆλ‹€. νΌμ‚¬λ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ μΈμŠ€ν„΄μŠ€μ™€ μΈμŠ€ν„΄μŠ€ κ°„μ˜ ν˜‘λ ₯이 λ§Žμ•„μ§μ— 따라 λ°œμƒν•˜λŠ” 높은 의쑴 관계(결합도)λ₯Ό 쀄이고, μ‹œμŠ€ν…œ 개발의 μœ μ—°μ„±μ„ ν–₯상할 수 μžˆλ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.


νΌμ‚¬λ“œ νŒ¨ν„΄μ€ νŒ¨ν„΄ ꡬ쑰 이해 해보기!

Client -> Facade -> Subsystem Class

  • Client

    • ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλΈŒ μ‹œμŠ€ν…œ 객체λ₯Ό 직접 ν˜ΈμΆœν•˜μ§€ μ•Šκ³  νΌμ‚¬λ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€
  • Facade

    • μ–΄λ–€ Subsystem ν΄λž˜μŠ€κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 응닡해야 ν•˜λŠ”μ§€ μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.
    • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ μ ˆν•œ Subsystemμ—κ²Œ μ „λ‹¬ν•΄μ€λ‹ˆλ‹€.
  • Subsystem

    • Subsystem κΈ°λŠ₯을 κ΅¬ν˜„ν•©λ‹ˆλ‹€.
    • νΌμ‚¬λ“œ κ°μ²΄μ—μ„œ μš”μ²­μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
    • μ„œλΈŒ μ‹œμŠ€ν…œ ν΄λž˜μŠ€λ“€μ€ νΌμ‚¬λ“œ 객체의 쑴재λ₯Ό λͺ¨λ¦…λ‹ˆλ‹€

νΌμ‚¬λ“œ νŒ¨ν„΄μ˜ μž₯단점

  • μž₯점
    • λ³΅μž‘ν•œ ν•˜μœ„ μ‹œμŠ€ν…œμ—μ„œ μ½”λ“œλ₯Ό λ³„λ„λ‘œ 뢄리할 수 μžˆμŠ΅λ‹ˆλ‹€
  • 단점
    • νΌμ‚¬λ“œλŠ” μ•±μ˜ λͺ¨λ“  ν΄λž˜μŠ€μ— κ²°ν•©λœ 전지전λŠ₯ν•œ 객체? κ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

νΌμ‚¬λ“œ νŒ¨ν„΄μ˜ ν•œκ³„

μ•± 개발 μ΄ˆκΈ°μ—λŠ” 섀계가 λ‹¨μˆœν•˜κ²Œ κ΅¬μ„±λ˜κ³ , ν™•μž₯을 ν•  λ•Œμ—λ„ λ‹¨μˆœν•˜κ²Œ λ§Œλ“€λ €κ³  λ…Έλ ₯을 ν•˜κΈ° λ•Œλ¬Έμ— νΌμ‚¬λ“œ νŒ¨ν„΄μ΄ μ• λ§€ν•œ κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” νΌμ‚¬λ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜κ²Œ 되면 μƒˆλ‘œμš΄ 계측을 μΆ”κ°€ν•˜λŠ” 것이기 λ•Œλ¬Έμ— 관리해야 ν•  νƒ€μž…μ΄ λŠ˜μ–΄λ‚œλ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ νΌμ‚¬λ“œ νŒ¨ν„΄μ€ μ‹ μ€‘ν•˜κ²Œ μ‚¬μš©ν•΄ μ£Όμ„Έμš”.


νΌμ‚¬λ“œ 예제 μ½”λ“œ

Facade Pattern μ˜ˆμ œμ½”λ“œ