이름을 모르고 특정 인터페이스를 구현하는 클래스를 어떻게 호출 할 수 있습니까?

분할 게임

그래서 게임 엔진을 만들고 있는데 특정 인터페이스를 구현하는 클래스에서 메서드를 호출 할 수 있어야합니다 (인터페이스에 의해 구현 된 메서드 만 호출하고 싶습니다).

내 문제는 클래스 이름이 그것을 구현할 것인지 모른다는 것입니다.

예를 들어 Java는 클래스 이름을 모르고 Runnable을 구현하는 모든 클래스에서 어떻게 run () 메서드를 호출합니까?

토마스여

실제로, Factory 패턴이나 Spring과 같은 종속성 주입 컨테이너 에 대해 질문하고 있습니다.

물론 인터페이스에서 메서드를 호출 할 수 있습니다. 문제는 인스턴스를 얻는 방법 입니다. 물론 어딘가에서 지정, 코딩 또는 구성해야합니다. 나중에 둘 이상이있을 수있는 경우 구성이 선호됩니다.

따라서 실제 예가 더 많습니다.

public interface MovementStrategy {
    public Move selectMove (Actor actor, ActorSituation theirSituation);
}

public class MonsterTypes {
    public static MonsterType GOBLIN = new MonsterType( "goblin", new AttackMover(1.2));
    public static MonsterType TROLL = new MonsterType( "troll", new AttackMover(0.45));
    public static MonsterType DEER = new MonsterType( "deer", new FleeMover(2.0));

    // useful to have, also.
    public static List<MonsterType> getAllRegisteredTypes(); 



    public static class MonsterType {
        protected String name;
        protected MovementStrategy moveStrategy;
        // TODO -- getters & setters for all properties.

        // constructor.
        public MonsterType (String name, MovementStrategy moveStrategy) {
            this.name = name;
            this.moveStrategy = moveStrategy;
        }
    }
}

public class AttackMover implements MovementStrategy {
    // SPEC: generally move towards/attack PC, with varying speeds.
}
public class FleeMover implements MovementStrategy {
    // SPEC: generally run away from PCs.
}

이것은 아마도 완벽한 디자인은 아닐 것입니다. "움직임"(일명 목표 추구)과 배우의 턴 / 액션을 전반적으로 결합합니다.하지만 더 많은 아이디어를 얻을 수 있기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 인터페이스를 구현하는 클래스 만 메서드를 호출 할 수 있는지 확인 하시겠습니까? 씨#?

분류에서Dev

속성을 호출하지 않고 클래스를 어떻게 호출 할 수 있습니까?

분류에서Dev

인터페이스는 구현 클래스에없는 공용 속성 / 메서드를 어떻게 노출 할 수 있습니까?

분류에서Dev

자신의 인수를 받아들이는 인터페이스를 확장하는 클래스를 어떻게 구현할 수 있습니까?

분류에서Dev

Java에서 Java 인터페이스를 구현하는 JRuby 클래스를 어떻게 인스턴스화 할 수 있습니까?

분류에서Dev

Java에서 Java 인터페이스를 구현하는 JRuby 클래스를 어떻게 인스턴스화 할 수 있습니까?

분류에서Dev

PHP 파일을 포함하지 않고 어떻게 클래스를 호출 할 수 있습니까?

분류에서Dev

인터페이스 메소드를 구현하지 않고도 어떻게 활용할 수 있습니까?

분류에서Dev

어떻게 형 인터페이스의 변수를 선언하고 다음 변수가 구현 인터페이스, 어떻게이 문제를 테스트 할 수있는 클래스의 객체를 할당?

분류에서Dev

Prism에서 공통 인터페이스를 구현하는 컬렉션 IEnumarable <T>로 모든 인스턴스를 어떻게 주입 할 수 있습니까?

분류에서Dev

C # 메서드 호출이 인터페이스를 구현하는 클래스를 해당 인터페이스로 캐스팅 할 수 없습니다.

분류에서Dev

추상은 인터페이스를 어떻게 구현할 수 있습니까?

분류에서Dev

다른 어셈블리에서 구현하는 인터페이스를 보호 할 수 있습니까?

분류에서Dev

이 이름이없는 함수를 어떻게 호출 할 수 있습니까?

분류에서Dev

웹 페이지 플러그인을 만들기 위해 코드를 리버스 엔지니어링 할 때 특정 요소가 이벤트를 수신 할 때 어떤 함수가 호출되는지 어떻게 알 수 있습니까?

분류에서Dev

일부 인터페이스를 구현하는 모든 개체의 메서드를 호출 할 수 있습니까?

분류에서Dev

특정 주석이 있고 특정 인터페이스를 구현하는 모든 클래스

분류에서Dev

모듈을 사용하여 표현식 인 클래스를 어떻게 스타일링 할 수 있습니까?

분류에서Dev

널리 사용되는 사용자 정의 버튼이 onclick이 호출 된 클래스를 어떻게 추적 할 수 있습니까?

분류에서Dev

이메일에서 호출 할 사용자 지정 코드를 어떻게 구현할 수 있습니까?

분류에서Dev

Python 슈퍼 클래스에서 메서드를 실행할 때이를 호출 한 자식 클래스의 이름을 어떻게 알 수 있습니까?

분류에서Dev

클래스가 인터페이스를 구현하고 해당 인터페이스 뒤에서 논리를 실행할 수 있습니까?

분류에서Dev

클래스는 싱글 톤 클래스에 정의 된 클래스 메서드를 어떻게 호출 할 수 있습니까?

분류에서Dev

인터페이스간에 트래픽을 올바르게 전달하지 않는 IPv6을 어떻게 수정할 수 있습니까?

분류에서Dev

panResponder가 이동을 시작할 때 부모 클래스에서 사용자 지정 함수를 호출하려면 어떻게해야합니까?

분류에서Dev

스칼라의 인수로 "이름 별"을 호출하는 함수를 어떻게 호출할까요?

분류에서Dev

어떻게 하스켈에서이 함수를 호출 할 수 있습니까?

분류에서Dev

내 페이지에서 requirejs 모듈 내에 정의 된 함수를 어떻게 호출 할 수 있습니까?

분류에서Dev

UML : 컴포넌트는 어떻게 인터페이스를 구현할 수 있습니까?

Related 관련 기사

  1. 1

    특정 인터페이스를 구현하는 클래스 만 메서드를 호출 할 수 있는지 확인 하시겠습니까? 씨#?

  2. 2

    속성을 호출하지 않고 클래스를 어떻게 호출 할 수 있습니까?

  3. 3

    인터페이스는 구현 클래스에없는 공용 속성 / 메서드를 어떻게 노출 할 수 있습니까?

  4. 4

    자신의 인수를 받아들이는 인터페이스를 확장하는 클래스를 어떻게 구현할 수 있습니까?

  5. 5

    Java에서 Java 인터페이스를 구현하는 JRuby 클래스를 어떻게 인스턴스화 할 수 있습니까?

  6. 6

    Java에서 Java 인터페이스를 구현하는 JRuby 클래스를 어떻게 인스턴스화 할 수 있습니까?

  7. 7

    PHP 파일을 포함하지 않고 어떻게 클래스를 호출 할 수 있습니까?

  8. 8

    인터페이스 메소드를 구현하지 않고도 어떻게 활용할 수 있습니까?

  9. 9

    어떻게 형 인터페이스의 변수를 선언하고 다음 변수가 구현 인터페이스, 어떻게이 문제를 테스트 할 수있는 클래스의 객체를 할당?

  10. 10

    Prism에서 공통 인터페이스를 구현하는 컬렉션 IEnumarable <T>로 모든 인스턴스를 어떻게 주입 할 수 있습니까?

  11. 11

    C # 메서드 호출이 인터페이스를 구현하는 클래스를 해당 인터페이스로 캐스팅 할 수 없습니다.

  12. 12

    추상은 인터페이스를 어떻게 구현할 수 있습니까?

  13. 13

    다른 어셈블리에서 구현하는 인터페이스를 보호 할 수 있습니까?

  14. 14

    이 이름이없는 함수를 어떻게 호출 할 수 있습니까?

  15. 15

    웹 페이지 플러그인을 만들기 위해 코드를 리버스 엔지니어링 할 때 특정 요소가 이벤트를 수신 할 때 어떤 함수가 호출되는지 어떻게 알 수 있습니까?

  16. 16

    일부 인터페이스를 구현하는 모든 개체의 메서드를 호출 할 수 있습니까?

  17. 17

    특정 주석이 있고 특정 인터페이스를 구현하는 모든 클래스

  18. 18

    모듈을 사용하여 표현식 인 클래스를 어떻게 스타일링 할 수 있습니까?

  19. 19

    널리 사용되는 사용자 정의 버튼이 onclick이 호출 된 클래스를 어떻게 추적 할 수 있습니까?

  20. 20

    이메일에서 호출 할 사용자 지정 코드를 어떻게 구현할 수 있습니까?

  21. 21

    Python 슈퍼 클래스에서 메서드를 실행할 때이를 호출 한 자식 클래스의 이름을 어떻게 알 수 있습니까?

  22. 22

    클래스가 인터페이스를 구현하고 해당 인터페이스 뒤에서 논리를 실행할 수 있습니까?

  23. 23

    클래스는 싱글 톤 클래스에 정의 된 클래스 메서드를 어떻게 호출 할 수 있습니까?

  24. 24

    인터페이스간에 트래픽을 올바르게 전달하지 않는 IPv6을 어떻게 수정할 수 있습니까?

  25. 25

    panResponder가 이동을 시작할 때 부모 클래스에서 사용자 지정 함수를 호출하려면 어떻게해야합니까?

  26. 26

    스칼라의 인수로 "이름 별"을 호출하는 함수를 어떻게 호출할까요?

  27. 27

    어떻게 하스켈에서이 함수를 호출 할 수 있습니까?

  28. 28

    내 페이지에서 requirejs 모듈 내에 정의 된 함수를 어떻게 호출 할 수 있습니까?

  29. 29

    UML : 컴포넌트는 어떻게 인터페이스를 구현할 수 있습니까?

뜨겁다태그

보관