νΌμ¬λ ν¨ν΄ (Facade Pattern)

νΌμ¬λ ν¨ν΄μ λΌμ΄λΈλ¬λ¦¬μ λν, νλ μμν¬μ λν λλ λ€λ₯Έ ν΄λμ€λ€μ 볡μ‘ν μ§ν©μ λν λ¨μνλ μΈν°νμ΄μ€λ₯Ό μ 곡νλ ꡬ쑰μ λμμΈ ν¨ν΄μ λλ€.
Facadeλ "건물μ μ λ©΄"μ μλ―Ένλ λ¨μ΄λ‘ μ΄λ€ μννΈμ¨μ΄μ λ€λ₯Έ 컀λ€λ μ½λ λΆλΆμ λνμ¬ κ°λ΅νλ μΈν°νμ΄μ€λ₯Ό μ 곡ν΄μ£Όλ λμμΈ ν¨ν΄μ νλ€. νΌμ¬λ κ°μ²΄λ 볡μ‘ν μννΈμ¨μ΄ λ°κΉ₯μͺ½μ μ½λκ° λΌμ΄λΈλ¬λ¦¬μ μμͺ½ μ½λμ μμ‘΄νλ μΌμ κ°μμμΌ μ£Όκ³ , 볡μ‘ν μννΈμ¨μ΄λ₯Ό μ¬μ© ν μ μκ² κ°λ¨ν μΈν°νμ΄μ€λ₯Ό μ 곡ν΄μ€λ€.

μ₯μ
: 볡μ‘ν νμ μμ€ν μμ μ½λλ₯Ό λ³λλ‘ λΆλ¦¬νμ¬ νΉμ κΈ°λ₯μ νΈλ¦¬νκ² μ¬μ©κ°λ₯νλ€.
: νλμ νΌμ¬λλ₯Ό κ΄λ ¨ μλ κΈ°λ₯λ€λ‘ μ€μΌλλ κ²μ λ°©μ§ν μ μμ΄ ν΄λΉ μμ€ν μ λν μμ§λκ° λλ€. (μΊ‘μν)
λ¨μ
: νμ μμ€ν κ³Ό μ§μ μμ νλ κ²κ³Ό λΉκ΅νλ©΄ νΌμ¬λλ μ νλ κΈ°λ₯μ±μ μ 곡νλ€.
β 볡μ‘ν νμ μμ€ν μ λν μ νμ μ΄μ§λ§ κ°λ¨ν μΈν°νμ΄μ€κ° νμν λ μ¬μ©νλ€.
β νμ μμ€ν μ κ³μΈ΅λ€λ‘ ꡬμ±νλ €λ κ²½μ° μ¬μ©νλ€.
νλ‘μ νΈμ μ μ©νκΈ°
service κ°μ²΄κ° μ¬λ¬ domainμ repositoryλ₯Ό μμ‘΄ν΄μΌνλ κ²½μ°λ€μ΄ μλ€. μ΄λ λ무 λ§μ μμ‘΄μ κ°μ Έκ°λ€λ©΄ ν΄λΉ λλ©μΈμ service κ°μ²΄λ μμ§μ±μ΄ λ¨μ΄μ§ λΏ μλλΌ μ€νλ§ λΉμ μν μ°Έμ‘° μλ¬κ° λ°μν μ μλ€.
μ΄λ νΌμ¬λ ν¨ν΄μ μ μ©νμ¬, κ°κ°μ λλ©μΈ serviceλ ν΄λΉ λλ©μΈ repositoryμ λν μμ‘΄μ± νλλ§ κ°κ³ κ·Έλ¬ν serviceλ€μ μ‘°ν©ν΄μ£Όλ νΌμ¬λ λ μ΄μ΄λ₯Ό μμ±ν μ μλ€. μ΄ κ²½μ° λ μ΄μ΄λ κΉμ΄μ§κ² μ§λ§ ν΄λΉ κΈ°λ₯μ λν λ¨μ ν μ€νΈλ κΉλνκ² μ§νν μ μμ κ²μ΄λ€.
@Service
@RequiredArgsConstructor
public class OrderFacadeService {
private final OrderService orderService;
private final StoreService storeService;
private final UserService userService;
private final ItemService itemService;
private final OrderMapper orderMapper;
private final PaymentService paymentService;
.. // μλ΅
}
μ£Όλ¬Έ λ‘μ§μ μ²λ¦¬νκΈ° μν΄ μ¬μ©λλ λ§μ λλ©μΈλ€.. OrderFacadeServiceλ₯Ό ꡬμ±ν λλΆμ OrderServiceμ μμ§λλ₯Ό λμ΄κ³ μν μ°Έμλ₯Ό ν΄κ²°νμλ€.
reference.
https://refactoring.guru/ko/design-patterns/facade
https://leeheefull.tistory.com/13
μλͺ»λ μ λ³΄κ° μλ€λ©΄ λκΈμ ν΅ν΄ μλ €μ£ΌμΈμ. κ°μ¬ν©λλ€.
'λμμΈ ν¨ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λμμΈ ν¨ν΄] μ±κΈν΄ (0) | 2022.10.31 |
---|
λκΈ