본문 바로가기

spring

Static Dispatch, Dynamic Method Dispatch

반응형

스프링은 Dependency + Injection + Framework

What is dependency?

  •  의존관계
    • Supplier의 변화가 Client에 영향을 주는 경우

  • 의존관계 존재시 reusable한 객체생성이 쉽지 않을 수도..
    • 런타임 시점에 결정되는 관계를 작성해야 함
      • 구현 대신 인터페이스 사용
      • 오브젝트 합성(composition)을 사용

 

What is a static dispatch

  • 컴파일 시점에 어떤 메서드가 호출될지 컴파일러는 알고 있는 경우
    • 어떤 메서드 호출될지 결정 -> Method Dispatch 과정, 이 과정에서 static 또는 dynamic을 결정
      • Method Signature(method name, parameter type)를 활용
      • Method Signature가 같으면 같은 클래스내 정의 불가
  • 메서드 오버로딩 과정에서 static dispatch 발생
  • 바이트 코드로 정보가 그대로 남음

 

What is a dynamic dispatch

  • Static과는 다르게 컴파일러가 어떤 메서드를 호출할지 모르는 경우
    • Interface 또는 추상 클래스를 사용해 내부에 정의된 Method를 호출
  • 컴파일러가 알고 있는 타입 정보로 Runtime 시 해당 타입의 객체를 생성 후 메서드를 호출함
Interface Person {
	public String getName();
}

Class Student implements Person {
	@Override
	public String getName() {
    	return "Student";
    }
}

Class Main() {
	Person p = new Student();
}

 

Ref

https://multifrontgarden.tistory.com/133

https://www.youtube.com/watch?v=s-tXAHub6vg&list=PLv-xDnFD-nnmof-yoZQN8Fs2kVljIuFyC&index=16

 

토비의봄#01. Double Dispatch

토비의 스프링으로 유명한 토비님의 방송을 보고 정리를 시작한다. 1. Dispatch 1. (특히 특별한 목적을 위해) 보내다 2. (편지・소포・메시지를) 보내다 3. 신속히 해... 네이버 검색결과이다. 자바는

multifrontgarden.tistory.com

 

반응형