Я в основном разработчик на C #, .NET и привык к интерфейсам и TDD в C #. Интерфейсы в C # в первую очередь определяют контракт при реализации. Использование кажется немного другим в Java. В частности, кажется, что каждый проект, с которым я сталкивался, реализует базовый интерфейс для доступа к приложению, как если бы всегда требовало, чтобы любое приложение Java использовало интерфейс. Я думаю, что мне не хватает некоторого базового понимания, поэтому я действительно буду признателен за любые подсказки для хорошего учебника, который я могу прочитать.
Например, у меня есть тест, который выглядит так (в отдельномПапка «Test» в моем решении):
Tests.java
package com.dius.bowling;
class DiusBowlingGameTest {
private BowlingGame bowlingGame;
@BeforeEach
void setUp() {
this.bowlingGame = new DiusBowlingGame();
this.bowlingGame.startGame();
}
Чтобы получить доступ к this.bowlingGame.startGame();
Мне нужно добавить метод в интерфейс,Почему? Кажется, есть разница между Java и C # / .NET, о которой я не знаю?
Интерфейс
package com.dius.bowling;
/**
* Interface for a bowling game.
*/
public interface BowlingGame {
/**
* roll method specifying how many pins have been knocked down
* @param noOfPins no. of pins knocked down
*/
void roll(int noOfPins);
/**
* get player's current score
* @return player's current score
*/
int score();
void startGame();
}
DiusBowlingGame
package com.dius.bowling;
/**
* Scoring system for tenpin bowls
*/
public class DiusBowlingGame implements BowlingGame {
ArrayList<BowlingFrame> gameFrames = new ArrayList<BowlingFrame>();
public void roll (int noOfPins) {
/* Implementation */
}
}
/**
* Activate the 1st frame of the game
*/
public void startGame() {
advanceFrame();
};