Объяснение по вашему собственному сценарию :
Интерфейс
interface Player{
public void play();
public void pause();
public void stop();
}
Классы, которые реализуют Player
Intreface;
class AudioPlayer implements Player{...}
class VideoPlayer implements Player{...}
Какой-то дополнительный класс. Бессмысленно, но кажется уместным
Class PlayList{}
перечисление, которое играет важную роль;
enum MEDIAPLAYER {
AUDIO,VIDEO;
public Player getPlayer() {
switch (this) {
case AUDIO:
return new AudioPlayer();
case VIDEO:
return new VideoPlayer();
default:
return new AudioPlayer();
}
}
}
Используя ваш код
Player testPlayer = MEDIAPLAYER.getPlayer();
:
testPlayer.play();
Теперь, если добавлен какой-либо новый игрок, его запись перейдет к MEDIAPLAYER
, который возвращает объект типа Player
. Так что каждый должен будет реализовать Player
Другой подход :
Вы можете создать абстрактный класс, скажем, MasterPlayer
, у которого есть все абстрактные методы, которые есть у интерфейса Player
. Кроме того, MasterPlayer
будет иметь несколько дополнительных методов, таких как управление PlayList