저는 자바에서 피코 컨테이너를 사용하여 제가 설계 한 미니 크래프트 플러그인 프레임 워크 용 DI를 수행했습니다.피코 컨테이너로 멀티 데코레이터 설정하기
플러그인에는 인터페이스에 정의 된 이벤트 리스너 메소드가 있으며 인터페이스 당 하나의 메소드입니다.
플레이어가 서버에 참여하고 나가는 동안 특정 클래스가 이벤트를 원하면이 인터페이스는 두 개의 특정 인터페이스를 구현합니다. 이 경우 IPlayerLoginEvent 및 IPlayerQuitEvent.
다음 프레임 워크에는 각 유형의 이벤트 인터페이스를 생성자 주입 인수로 사용하는 클래스가 있습니다.
이 컨테이너 클래스는 craftbukkit 서버 소프트웨어가 호출하는 @Listener로 태그가 지정됩니다.
래퍼 클래스는 craftbukkit에서 프레임 워크 관련 클래스로 보내는 데이터를 래핑하므로 최소한 이론 상 서버 무의미한 플러그인을 작성할 수 있습니다.
작은 예 :
플러그인 AwesomePlugin이 IPlayerLoginEvent 및 IPlayerQuitEvent를 구현하는 클래스의 PlayerHandler 있습니다. 프레임 워크는 PlayerHandler를 생성자 인수로 전달하여 "PlayerLogin"및 "PlayerQuit"클래스의 각 인스턴스를 생성해야합니다. PlayerLogin 및 PlayerQuit 인스턴스는 CraftBukkit에 이벤트 리스너로 등록됩니다.
이 현재 피코를 사용하여 구현하는 방법은 여기에 볼 수 있습니다:
https://github.com/Runsafe/Framework/blob/master/src/no/runsafe/framework/event/EventEngine.java#L32
그 코드가 끔찍한 보이나요 나는이 시나리오에 대한 더 우아한 해결책을 찾을 수 없어, 그래서 지금 귀하의 지침을 외칩니다.
아키텍처에 대한 정보를 추가하는 것이 좋습니다. 코드를 깊이 파고 들지 않고 진행되는 일을 따라하기가 어렵습니다. – Torious
좋아요, 시도 할게요 .. –