본문 바로가기
백수/java

의존성

728x90
반응형

의존성

  • 객체 지행 프로그래밍에서 클래스간에 의존성이 있다는 것은 클래스간의 의존 관계가 있다는 의미 입니다.
  • 클래스간에 의존 관계가 있다는 것은 한 클래스가 바뀔 때 다른 클래스가 영향을 받는다는 뜻 입니다.
  • 클래스 A가 다른 클래스, 인터페이스 B를 사용할 때 A는 B에 의존한다고 이야기 합니다.
  • 한 객체의 코드에서 다른 객체를 생성하거나 다른 객체의 메서드를 호출할 때 그리고 파라미터로 객체를 전달받아 사용할 때 의존성이 발생한다고 할 수 있습니다.
  • 이때 모듈과 모듈 사이의 의존성의 정도를 결합도라 하고 결합도의 Losse하고 Tight한 정도는 연속적으로 표현됩니다.

단점

  • A가 B에 의존중 일때 B의 변경은 A에게 영향을 끼칩니다.
  • 이런 의존의 영향은 도미노와 동일한 효과가 발생합니다.
  • 이러한 의존성은 유닛 테스트가 어려운 코드를 만듭니다.
  • 유닛 테스트는 ‘특정 모듈’이 의도된대로 작동하는지 테스트하는 과정을 의미합니다.
  • 특정 모듈의 작동이 다른 모듈을 필요로 한다는 의존관계가 있는 경우 특정 모듈만을 독립적으로 테스트가 어렵습니다.

의존성 주입(Dependency Injection)

  • 의존성의 위험성을 해소하기 위해 사용되는 패턴 입니다.
  • 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해줍니다.
  • 의존 관계 주입은 어떤 객체가 사용하는 외존 객체를 직접 만들어 사용하는게 아닌 외부에서 생성된 객체를 주입받아 사용하는 방법이다. (new 연산자를 이용해서 객체 생성 후 주입 받음)

장점

  1. 객체간 결합도가 낮아 추후 코드 테스트가 쉬어진다. (종속성 과 결합도 모두 낮아진다.)
  2. 코드 재사용과 코드의 유연성이 높아진다.
  3. 코드의 중복을 막을 수 있고 보다 가독성이 좋아진다.
728x90
반응형

'백수 > java' 카테고리의 다른 글

알고리즘  (0) 2023.06.26
API(애플리케이션 프로그램 인터페이스)  (0) 2023.06.23
생성자  (0) 2023.06.20
자바 기초  (0) 2022.12.01
스프링 기초 3  (0) 2022.11.21