250x250
반응형
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

재 현

우아한 객체 지향 - 의존성 본문

Development

우아한 객체 지향 - 의존성

본명은이점례 2023. 8. 2. 14:04
728x90

의존성을 이용해 설계 진화시키기

 

 

의존성(Dependency)

설계 - 어디에 어떤 코드를 넣을지

핵심은 '변경'이다. 같이 변경되는 코드를 같은 곳에 넣어야 한다. 그게 의존성

 

 

연관관계: 타입을 알고 있음

의존관계: 파라미터 혹은 리턴타입 혹은 메서드 안에서 그 타입을 생성

상속관계: 타입을 상속

 

 

아래 5가지를 지켜주자.

  1. 양방향 의존성을 피하라
  2. 다중성이 적은 방향을 선택해라
  3. One-To-Many 보단 Many-To-One
  4. 의존성이 필요 없다면 제거해라
  5. 패키지 사이의 의존성 사이클(양방향 의존성)을 제거한다. 설계 원칙은 변경이다.

 

관계에는 방향성이 필요

관계의 방향 = 협력의 방향 = 의존성의 방향

 

 

관계의 종류

연관관계: 협력을 위해 필요한 영구적인 탐색 구조

의존관계: 협력을 위해 일시적으로(파라미터, 리턴타입, 지역변수) 필요한 의존성

 

 

연관관계 = 탐색 가능성

A객체를 알면 B객체를 찾아갈 수 있어

보통 객체 참조를 사용

 

 

어떤 객체가 어떤 메시지를 받는다는 것은,

그 객체의 퍼블릭 메서드로 구현된다는 걸 의미한다.

 

 

메시지를 결정하고 메서드를 만드는 것이 맞다.

 

 

설계 개선하기

class를 구현하면 dependency를 그려보자

 

 

문제가 있다.

  1. 객체 참조로 인한 결합도 상승
  2. 패키지 의존성 사이클

객체 참조는 모든 객체가 연결되었기 때문에 함께 수정 가능하다. 가장 높은 의존성.

 

 

1. Repository를 통한 탐색(약한 결합도) - id

2. 인터페이스 - 구현을 통한 의존성 역전

3. 새로운 패키지 생성

 

 

간단한 규칙

- 함께 생성되고 함께 삭제되는 객체들을 함께 묶어라

- 도메인 제약사항을 공유하는 객체들을 함께 묶어라

- 가능하면 분리하라

 

 

그룹은 트랜잭션/조회/비즈니스 제약의 단위

주문 - 주문아이템 - 옵션 그룹 - 옵션

 

 

 

 

 

 

 

 

 

https://www.youtube.com/watch?v=dJ5C4qRqAgA&list=LL&index=1([우아한테크세미나] 190620 우아한객체지향 by 우아한형제들 개발실장 조영호님)

728x90

'Development' 카테고리의 다른 글

파이브 라인스 오브 코드 읽기(1)  (0) 2023.10.30
주식 자동 매수/매도 프로그램 만들기 후기  (0) 2023.08.02
const의 위력  (0) 2023.07.31
이슈 받았을 때  (0) 2023.07.27
아마존의 글쓰기  (0) 2023.07.23