2011-02-16 3 views
1

제 질문은 명령 패턴을 사용하여 서버 메서드를 호출하는 방법에 기반합니다. 그러나 가능한 많은 명령이 있습니다. 각 명령 인스턴스의 'execute'메소드에 대한 리턴 유형을 소개하고자합니다. 나는 이것이 명령 패턴의 의도 된 사용이 아니라는 것을 알고 있지만, 나는 다른 선택의 여지가 없다. 나는 저를 위해 일하기 위해 명령 패턴을 맞추어야합니다.일반 반환 형식 - Java

각 명령에서 'execute'메소드의 메소드 서명에 대해 반환 유형으로 무엇을 가질 수 있습니까? 나는 그것이 공변 반환 형식이어야 할 것 같아요. 이상적인 솔루션은 아니지만 다른 옵션은 많지 않습니다. 내 안드로이드 애플 리케이션을위한 서버를 개발 중이며 RMI는 안드로이드 SDK에서 사용할 수 없습니다. 반환 유형 문제에 대한 조언을 주시면 감사하겠습니다. 모든 다른 명령에서 반환 될 수있는 모든 반환 형식을 고려해야합니다. 일종의 일반적인 반환 형식을 반환하는이 문제에 대한 패턴이 있는지 확실하지 않습니다.

나는 이미이 스레드를 보았습니다. command pattern returning status 하지만 더 많은 영감이 필요합니다.

답변

3

아마도 여기 실제 질문을 이해하지 못 하겠지만 간단합니다.

public class FooCommand implements Command<Bar> { 

    public Bar execute() { 
    ... 
    } 
} 

또는 캐치 어딘가에있다 :

public interface Command<T> { 
    T execute(); 
} 

그리고

는 TEH 명령이 될 수 있을까?

+0

완벽한을 구현하기 위해 - 제네릭을. 나는 연락이 안돼! 죄송합니다. 도움을 주셔서 감사합니다 :) – Joeblackdev

1

Android가 지원하지 않는 RMI가 실제로 필요한 것 같습니다.

가벼운 RMI를 사용할 수 있습니다.

자신이 biziclop의 인터페이스에서 시작 뭔가,

// suppose there are object input/output streams established 

// on client side 
FooCommand foo = new FooCommand(params..); 
Bar bar = remoteExec(foo); 

<T> T remoteExec(Command<T> cmd) 
    output.writeObject(cmd); 
    return (T)input.readObject(); 

// on server side 

    Command cmd = (Command)input.readObject(); 
    Object result = cmd.execute(); 
    output.writeObject(result); 
+0

안녕하세요. 거기에 가벼운 RMI 라이브러리가 있습니까? 그렇다면, 나는 그들을 찾아 어떤 행운을 가지고 있지 않다 ... – Joeblackdev

+0

좋아 보인다! remoteExec가 Command 인터페이스 (추상 클래스)에 정의되어 있다고 생각하겠습니까? 고마워. – Joeblackdev

+1

모르겠다. RMI는 최근에 유행하지 않았다. 아이디어는 java.lang.reflect.Proxy를 사용하여 메소드 호출을 인터셉트하여 서버에 직렬화합니다. 너무 열심히. 아마 안드로이드를위한 가치있는 오픈 소스 프로젝트 일 것입니다. – irreputable