이 질문은 대표단 디자인 패턴은 here입니다. Java에서 대체 가능성을 잃지 않고 위임 디자인 패턴을 사용하는 방법이 있습니까?
메쉬
- 플레이어
- 차량 및 이들 각각을 수행 할 수 있습니다
나는 다양한 개체를 나타내는 내 게임 엔진의 인터페이스의 번호를 가지고 표현되기 (위해) 때문에, 그들은
render()
메소드를 포함한 Renderable 인터페이스를 구현합니다. 위임을 사용방법 1
는 예는 다음과 같다 : 나는 차를 렌더링 할 때마다, 난 그냥
car.renderable.render();
전화public interface Vehicle { public void drive(); } public class Car implements Vehicle { public Renderable renderable; @Override public void drive() { // ... } }
.
이 방법의 문제점은 목록을 만들고 반복 할 수 없다는 점입니다.
public interface Vehicle extends Renderable { public void drive(); }
만이 가진 문제가 있음을 나는 자동차, 자전거, 트럭, 탱크 정의하면, 등 :
방법이
이 문제를 해결하기 위해, 나는 차량 렌더링 가능한 확장 할 수 이 클래스들 각각은 render()에 대한 코드를 채워야합니다 (아마도 동일 할 것입니다).
Vehicle을 구현하는 모든 구체적인 클래스에서 render()를 정의하지 않으면 서 Renderable을 내 Vehicle 인터페이스로 확장하는 이점을 유지할 수있는 방법이 있습니까?
render
메서드에 대한 코드가 다른 클래스 사이에 동일 경우
이 질문은 여기에서 나온 : http://stackoverflow.com/questions/5546711/how-to-write-solid-pure-aggregation-composition-game-objects-in-java – sdasdadas
각 클래스합니까 그 Renderable은'public Renderable getRenderable()'메서드를 가지고 있습니까? 그렇다면이 동물들을 모을 수있는 인터페이스가 될 수 없습니까? 또한이 사람들이 Iterable 인터페이스를 구현하도록 하시겠습니까? –
각각에는 'getRenderable()'메소드가 있습니다. 나는 인터페이스를 추출 할 수 있다고 믿는다. (실제로 Renderable 인터페이스에 대한 테스트이기 때문에 무엇을 호출해야할지 모르겠다.) 그리고 아니, 나는 가지 않을거야 ... – sdasdadas