- 개요
의존성 주입은 클래스 내부에서 필요한 객체를 스스로 만드는 것이 아닌 외부에서 주입받아 사용하는 개념이다
이를 통해 다른 클래스와의 의존도는 감소시키고 코드의 재사용성과 유지보수성은 증가시킬 수 있다
이때 의존성 주입은 인터페이스를 통해 구현할 수 있다
- 인터페이스 : 의존성 주입의 구현
1) 인터페이스를 사용하지 않는 코드
// 자바 코드 예시
class KumhoTire {
...
}
class Car {
private KumhoTire tire;
public Car() {
// Car 클래스가 KumhoTire 클래스에 종속
this.tire = new KumhoTire();
}
}
인터페이스를 사용하지 않는 경우 Car 클래스가 tire 변수의 객체를 생성하는 경우
위와 같이 KumhoTire 클래스에 종속적인 것을 확인할 수 있다
2) 인터페이스를 사용하는 코드
// 자바 코드 예시
interface Tire {
void roll();
}
class KumhoTire implements Tire {
public void roll() { System.out.println("저는 금호 타이어입니다."); }
}
class MichelinTire implements Tire {
public void roll() { System.out.println("저는 미쉐린 타이어입니다"); }
}
class Car {
// 인터페이스를 통해 특정 클래스에 의존하지 않게 됨
private Tire tire;
// 생성자 주입(외부에서 특정 클래스를 주입받아 tire 변수의 객체를 생성)
public Car(Tire tire) {
this.tire = tire;
}
}
인터페이스를 사용하는 경우 Car 클래스는 더 이상 특정 클래스에 종속되지 않고
외부에서 의존성 주입을 통해 특정 클래스 타입의 tire 변수의 객체를 생성할 수 있는 것을 확인할 수 있다
- 스크립트 작업
1) PortalManagement 인터페이스

토큰을 재발급하는 RefreshTokens 함수의 순수 가상함수를 들고 있는 PortalManagement 인터페이스를 추가한다
해당 인터페이스를 사용하여 Portal 중재자 클래스와 LocalPlayerSubsystem간의 의존성을 제거한다
2) PortalManager 클래스

Portal 중재자 클래스의 상속관계에 PortalManagement 인터페이스를 추가하고
RefreshTokens 멤버함수에 virtual 키워드를 추가한다
3) DSLocalPlayerSubsystem 클래스

DSLocalPlayerSubsystem 클래스에서 Portal 중재자 클래스와의 연관성을 제거한다
또, PortalManager 멤버변수 대신 PortalManagementInterface 멤버변수를 사용한다
외부에서 토큰을 초기화하는 InitializeTokens 함수를 호출하면서 주입하여 PortalManagementInterface의 값을 설정한다

InitializeTokens 함수의 로직을 위와 같이 수정하여
외부에서 주입한 PortalManagement 매개변수를 사용하여 PortalManagementInterface의 값을 설정한다

SetRefreshTokenTimer 함수의 로직을 위와 같이 수정하여
PortalManagementInterface를 상속받아 구현한 Object가 있는지 확인하고
하단의 람다 함수에서 오버라이드된 RefreshTokens 함수를 호출한다
'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| Access Tokens - 6) 드롭다운 메뉴 (0) | 2026.06.19 |
|---|---|
| Access Tokens - 5) 대시보드의 구성 (0) | 2026.06.18 |
| Access Tokens - 3) Token 재발급 (0) | 2026.06.14 |
| Access Tokens - 2) LocalPlayerSubsystem 클래스 (0) | 2026.06.14 |
| Access Tokens - 1) 이메일 중복 방지 람다 트리거 생성 (0) | 2026.06.13 |