Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Código do post "Evitando duplicação com Strategy e Classe Anônimas": http://alexandreaquiles.com.br/2014/03/19/evitando-duplicacao-com-strategy-e-classes-anonimas
interface ComparacaoDeDesenhos {
boolean valePara(Desenho desenho);
}
class Desenho {
private final String nome;
private final int decadaDeCriacao;
public Desenho(String nome, int decadaDeCriacao) {
this.nome = nome;
this.decadaDeCriacao = decadaDeCriacao;
}
public String getNome() {
return nome;
}
public int getDecadaDeCriacao() {
return decadaDeCriacao;
}
public String toString() {
return nome + " (" + decadaDeCriacao + ")";
}
}
class FiltroDeDesenhos {
public List<Desenho> filtra(List<Desenho> desenhos, ComparacaoDeDesenhos comparacao){
List<Desenho> filtrados = new ArrayList<>();
for (Desenho desenho : desenhos) {
if(comparacao.valePara(desenho)){
filtrados.add(desenho);
}
}
return filtrados;
}
}
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Ordenando {
public static void main(String[] args) {
Desenho popeye = new Desenho("Popeye", 1920);
Desenho picaPau = new Desenho("Pica-pau", 1940);
Desenho flintstones = new Desenho("Flintstones", 1960);
Desenho scoobyDoo = new Desenho("Scooby-Doo", 1970);
Desenho simpsons = new Desenho("Simpsons", 1990);
List<Desenho> desenhos =
Arrays.asList(popeye, picaPau, flintstones, scoobyDoo, simpsons);
Collections.sort(desenhos, new Comparator<Desenho>() {
public int compare(Desenho desenho1, Desenho desenho2) {
return desenho1.getNome().compareTo(desenho2.getNome());
}
});
for (Desenho desenho : desenhos) {
System.out.println(desenho);
}
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Programa {
public static void main(String[] args) {
Desenho popeye = new Desenho("Popeye", 1920);
Desenho picaPau = new Desenho("Pica-pau", 1940);
Desenho flintstones = new Desenho("Flintstones", 1960);
Desenho scoobyDoo = new Desenho("Scooby-Doo", 1970);
Desenho simpsons = new Desenho("Simpsons", 1990);
List<Desenho> desenhos =
Arrays.asList(popeye, picaPau, flintstones, scoobyDoo, simpsons);
List<Desenho> antesDe1960 = new ArrayList<>();
for (Desenho desenho : desenhos) {
if(desenho.getDecadaDeCriacao() < 1960){
antesDe1960.add(desenho);
}
}
for (Desenho desenho : antesDe1960) {
System.out.println(desenho);
}
List<Desenho> comecamComS = new ArrayList<>();
for (Desenho desenho : desenhos) {
if(desenho.getNome().startsWith("S")){
comecamComS.add(desenho);
}
}
for (Desenho desenho : comecamComS) {
System.out.println(desenho);
}
}
}
import java.util.Arrays;
import java.util.List;
public class ProgramaComClasse {
public static void main(String[] args) {
Desenho popeye = new Desenho("Popeye", 1920);
Desenho picaPau = new Desenho("Pica-pau", 1940);
Desenho flintstones = new Desenho("Flintstones", 1960);
Desenho scoobyDoo = new Desenho("Scooby-Doo", 1970);
Desenho simpsons = new Desenho("Simpsons", 1990);
List<Desenho> desenhos = Arrays.asList(popeye, picaPau, flintstones,
scoobyDoo, simpsons);
FiltroDeDesenhos filtro = new FiltroDeDesenhos();
ComparacaoDeDesenhos comparacaoDeDesenhosAntesDe1960 =
new ComparacaoDeDesenhosAntesDe1960();
List<Desenho> antesDe1960 = filtro.filtra(desenhos,
comparacaoDeDesenhosAntesDe1960);
for (Desenho desenho : antesDe1960) {
System.out.println(desenho);
}
}
}
class ComparacaoDeDesenhosAntesDe1960 implements ComparacaoDeDesenhos {
public boolean valePara(Desenho desenho) {
return desenho.getDecadaDeCriacao() < 1960;
}
}
import java.util.Arrays;
import java.util.List;
class ProgramaComClassesAnonimas {
public static void main(String[] args) {
Desenho popeye = new Desenho("Popeye", 1920);
Desenho picaPau = new Desenho("Pica-pau", 1940);
Desenho flintstones = new Desenho("Flintstones", 1960);
Desenho scoobyDoo = new Desenho("Scooby-Doo", 1970);
Desenho simpsons = new Desenho("Simpsons", 1990);
List<Desenho> desenhos = Arrays.asList(popeye, picaPau,
flintstones, scoobyDoo, simpsons);
FiltroDeDesenhos filtro = new FiltroDeDesenhos();
List<Desenho> antesDe1960 = filtro.filtra(desenhos,
new ComparacaoDeDesenhos() {
public boolean valePara(Desenho desenho) {
return desenho.getDecadaDeCriacao() < 1960;
}
});
for (Desenho desenho : antesDe1960) {
System.out.println(desenho);
}
List<Desenho> comecamComS = filtro.filtra(desenhos,
new ComparacaoDeDesenhos() {
public boolean valePara(Desenho desenho) {
return desenho.getNome().startsWith("S");
}
});
for (Desenho desenho : comecamComS) {
System.out.println(desenho);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.