나는과 같이 두 개의 클래스를 인스턴스화하기 위해 노력하고있어 :객체 인스턴스화 순서와 널 포인터 예외는
ball = new Ball(gc, board, player, ai, score);
ai = new AiPaddle(gc, ball);
내 문제는 내가 인공 지능을 전달하고 있습니다 때문에 내 볼 클래스는, 널 (null) 포인터 예외를 던지는 유지하는 것이 인 아직 인스턴스화되지 않았습니다.
이러한 객체가 생성되는 순서를 바꾸면 볼 클래스가 필요하기 때문에 대신 내 AiPaddle 클래스가 오류를 던집니다.
이와 같은 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 인공 지능 소요 addAi라는 내 볼 클래스에 새로운 방법을 만들어 그것을 해결하는 대신, 그래서 나는이 있습니다
ball = new Ball(gc, board, player, score);
ai = new AiPaddle(gc, ball);
ball.addAi(ai);
을하지만이 할 수있는 더 나은 방법이 확신 해요.
잘못된 디자인으로 인해 발생하는 종속성 문제가 있습니다. 두 클래스의 구조를 다시 생각해보십시오. –
관계의 세부 사항을 살펴보면 클래스를 잘 디자인 할 수 있습니다. 그들에는 "가지고있다"또는 "있는 것"종류의 관계가있을 수 있습니다. 당신이 그 (것)들을 식별하는 경우에 당신은 더 나은 종류를 디자인하고 당신은 어떤 의존 문제든지 확인하고 해결할 수있을 것이다. – ankurtr