배운 내용 정리
의존이란 기능을 구현하기 위해 다른 구성요소를 사용하는 것으로, 객체 생성이나 메서드 호출 등을 뜻한다.
변경된 사항이 있을 경우 그것이 전파될 가능성을 의미하므로 의존하는 대상이 바뀌면 다른 부분 또한 바뀔 가능성이 높아진다. 특히 순환의존을 이용할 경우 변경 연쇄 전파 가능성이 높아져 위험하다.
의존 대상을 줄이기 위해서는 기능별로 분리하거나 기능 구현을 추상화하여 묶는 방법이 있다.
또한, 의존 대상의 객체를 직접 생성하지 않기 위해 팩토리, 빌더, 의존 주입, 서비스 로케이터 등을 쓸 수 있다.
의존 주입은 DI (Dependency Injection)이라고 하는데, 생성자나 메서드를 이용하여 외부에서 의존 객체를 주입시키는 것이다. 스프링 프레임워크 등의 조립기가 객체를 생성하고, 의존 주입을 처리한다. DI를 사용할 경우 상위 타입의 의존대상이 바뀔 시 조립기만 변경하면 되고, 의존하는 객체 없이 대역 객체를 사용해서 테스트가 가능하여 편리하고 유연하다는 장점이 있다.
의문점 해결
1. 순환 의존이 정확히 무엇인지 모르겠다.
구글에 검색해본 결과 한 블로그에서 답을 찾았다. A 파일이 B 파일을 참조하고 B 파일이 C 파일을 참조하는데 C가 다시 A를 참조할 수 있는 등 말 그대로 의존성이 순환하는 것을 뜻하는 용어였다. 서로 순환하면서 의지하다 보니 한번 작동하면 서로 무한 호출을 하거나 오류를 발생시키기도 한다.
2. 팩토리, 빌더, 서비스 로케이터 등은 강의에서 자세히 언급을 하지 않아 무엇인지 모른다.
구글에 검색해본 결과 이들이 모두 디자인 패턴이라는 것을 알았고, 디자인 패턴이 무엇인지 몰라 더 검색해보니 '소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 훌륭한 해결책' 이라는 정의를 찾았다. 자주 반복되는 문제들을 쉽게 해결할 수 있도록 만든 매뉴얼 같은 것이라고 이해했다. 팩토리, 빌더, 서비스 로케이터 패턴 모두 구글에 검색해보니 캡슐화를 이용하여 객체를 더 깔끔하고 유연하게 만든다는 공통점을 찾을 수 있었다.
3. 조립기가 무엇인지 모르겠다.
강의에서는 따르면 조립기가 객체를 생성하고 의존 주입을 처리한다고 설명하였는데, 여기서 의존 주입은 서로 다른 두 객체를 조립해준다고 생각할 수 있고 그 역할을 하는 클래스를 조립기라고 표현한다고 한다.
'컴퓨터공학 공부 > 알고리즘' 카테고리의 다른 글
NP Complete Problems (1) | 2023.06.03 |
---|---|
Big O (0) | 2023.06.01 |
문제해결법 (0) | 2023.03.14 |
객체 지향 프로그래밍 입문 - 다형성, 추상화, 상속과 조립 (0) | 2021.07.16 |
객체 지향 프로그래밍 입문 - 객체, 캡슐화 (0) | 2021.07.16 |