Skip to content

Instantly share code, notes, and snippets.

@pedrojoya
Created April 25, 2019 14:45
Show Gist options
  • Save pedrojoya/b2e4b77e75328016205103261f353cb2 to your computer and use it in GitHub Desktop.
Save pedrojoya/b2e4b77e75328016205103261f353cb2 to your computer and use it in GitHub Desktop.
PeliculasClaveGeneroParaEva
class Clave {
private final long numero;
private final Genero genero;
public Clave(Genero genero) {
this.numero = genero.nextId();
this.genero = genero;
}
@Override
public String toString() {
return String.format("%c%d", genero.getCodigo(), numero);
}
}
enum Genero {
COMEDIA('C'),
FICCION('F'),
TERROR('T');
private static Map<Genero, Long> idMap = new HashMap<>();
static {
idMap.put(Genero.COMEDIA, 0L);
idMap.put(Genero.FICCION, 0L);
idMap.put(Genero.TERROR, 0L);
}
private char codigo;
Genero(char codigo) {
this.codigo = codigo;
}
public char getCodigo() {
return codigo;
}
public long nextId() {
long newId = Genero.idMap.get(this) + 1;
idMap.put(this, newId);
return newId;
}
}
class Main {
public static void main(String[] args) {
Pelicula miedito1 = new Pelicula("Miedito1", Genero.TERROR);
Pelicula miedito2 = new Pelicula("Miedito2", Genero.TERROR);
Pelicula comedia1 = new Pelicula("Comedia1", Genero.COMEDIA);
System.out.printf("%s - %s\n", miedito1.getClave(), miedito1.getNombre());
System.out.printf("%s - %s\n", miedito2.getClave(), miedito2.getNombre());
System.out.printf("%s - %s\n", comedia1.getClave(), comedia1.getNombre());
}
}
class Pelicula {
private final Clave clave;
private final String nombre;
public Pelicula(String nombre, Genero genero) {
this.clave = new Clave(genero);
this.nombre = nombre;
}
public Clave getClave() {
return clave;
}
public String getNombre() {
return nombre;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment