나는 전략 패턴 구현 해요 : 이제자바, 전략 패턴, 제네릭 및 수익 형
public interface Stuff<T> {
T getStuff();
}
public class IntegerStuff implements Stuff<Integer> {
public Integer getStuff() { .. }
}
public class StringStuff implements Stuff<String> {
public String getStuff() { .. }
}
을, 나는 전략을 설정하는 "컨텍스트"를 사용하고, 전략 방법을 실행하려면 :
을public class Context() {
private Stuff stuff;
public setStrategy(Stuff stuff) { this.stuff = stuff; }
public Object doStuff() { // ARGH!
return stuff.getStuff()
}
}
generic을 사용하면 어떻게 Context 클래스의 doStuff()
메서드 유형을 사용 전략과 동일한 유형으로 만들 수 있습니까?
전략 패턴은 블랙 박스의 동작의 종류를 할 수 있습니다. 당신은 정의 된 입력과 정의 된 출력을 가지지 만 그 사이에 일어난 일은 전략을 결정합니다 (이것은 교환 가능해야합니다). 당신이 당신의 방법의 결과를 바꾸기를 원한다면 나는 전략 패턴이 올바른 선택이 아니라고 생각한다. – CRC
@CRC, 맞아, 네가 맞다고 생각해, 반환 형식을 바꾸면 "계약"이 변할지도 모른다. – Luciano
어쩌면이게 다른 방법으로 해결 될지도 몰라. : 이걸로 무엇을 하려니? – Fildor