From e67970d727e441a405d6d403f6bdd5298f22ebfa Mon Sep 17 00:00:00 2001 From: Bruno Dantas Date: Wed, 31 Oct 2018 16:57:59 -0200 Subject: [PATCH 1/2] Adicionando codigo do padrao abstract --- abstractFactory/CarroPopular.java | 5 +++++ abstractFactory/CarroSedan.java | 5 +++++ abstractFactory/Cliente.java | 20 ++++++++++++++++++++ abstractFactory/FabricaDeCarro.java | 6 ++++++ abstractFactory/FabricaFiat.java | 15 +++++++++++++++ abstractFactory/FabricaFord.java | 15 +++++++++++++++ abstractFactory/Fiesta.java | 10 ++++++++++ abstractFactory/FiestaSedan.java | 10 ++++++++++ abstractFactory/Palio.java | 10 ++++++++++ abstractFactory/Siena.java | 10 ++++++++++ 10 files changed, 106 insertions(+) create mode 100644 abstractFactory/CarroPopular.java create mode 100644 abstractFactory/CarroSedan.java create mode 100644 abstractFactory/Cliente.java create mode 100644 abstractFactory/FabricaDeCarro.java create mode 100644 abstractFactory/FabricaFiat.java create mode 100644 abstractFactory/FabricaFord.java create mode 100644 abstractFactory/Fiesta.java create mode 100644 abstractFactory/FiestaSedan.java create mode 100644 abstractFactory/Palio.java create mode 100644 abstractFactory/Siena.java diff --git a/abstractFactory/CarroPopular.java b/abstractFactory/CarroPopular.java new file mode 100644 index 0000000..f02fca9 --- /dev/null +++ b/abstractFactory/CarroPopular.java @@ -0,0 +1,5 @@ +package br.padroes.abstractFactory; + +public interface CarroPopular { + void exibirInfoPopular(); +} diff --git a/abstractFactory/CarroSedan.java b/abstractFactory/CarroSedan.java new file mode 100644 index 0000000..500b59c --- /dev/null +++ b/abstractFactory/CarroSedan.java @@ -0,0 +1,5 @@ +package br.padroes.abstractFactory; + +public interface CarroSedan { + void exibirInfoSedan(); +} diff --git a/abstractFactory/Cliente.java b/abstractFactory/Cliente.java new file mode 100644 index 0000000..52e955a --- /dev/null +++ b/abstractFactory/Cliente.java @@ -0,0 +1,20 @@ +package br.padroes.abstractFactory; + +public class Cliente { + public static void main(String[] args) { + FabricaDeCarro fabrica = new FabricaFiat(); + CarroSedan sedan = fabrica.criarCarroSedan(); + CarroPopular popular = fabrica.criarCarroPopular(); + sedan.exibirInfoSedan(); + System.out.println(); + popular.exibirInfoPopular(); + System.out.println(); + + fabrica = new FabricaFord(); + sedan = fabrica.criarCarroSedan(); + popular = fabrica.criarCarroPopular(); + sedan.exibirInfoSedan(); + System.out.println(); + popular.exibirInfoPopular(); + } +} diff --git a/abstractFactory/FabricaDeCarro.java b/abstractFactory/FabricaDeCarro.java new file mode 100644 index 0000000..c57dc66 --- /dev/null +++ b/abstractFactory/FabricaDeCarro.java @@ -0,0 +1,6 @@ +package br.padroes.abstractFactory; + +public interface FabricaDeCarro { + CarroSedan criarCarroSedan(); + CarroPopular criarCarroPopular(); +} diff --git a/abstractFactory/FabricaFiat.java b/abstractFactory/FabricaFiat.java new file mode 100644 index 0000000..5062c69 --- /dev/null +++ b/abstractFactory/FabricaFiat.java @@ -0,0 +1,15 @@ +package br.padroes.abstractFactory; + +public class FabricaFiat implements FabricaDeCarro { + + @Override + public CarroSedan criarCarroSedan() { + return new Siena(); + } + + @Override + public CarroPopular criarCarroPopular() { + return new Palio(); + } + +} diff --git a/abstractFactory/FabricaFord.java b/abstractFactory/FabricaFord.java new file mode 100644 index 0000000..d5cffd4 --- /dev/null +++ b/abstractFactory/FabricaFord.java @@ -0,0 +1,15 @@ +package br.padroes.abstractFactory; + +public class FabricaFord implements FabricaDeCarro { + + @Override + public CarroSedan criarCarroSedan() { + return new FiestaSedan(); + } + + @Override + public CarroPopular criarCarroPopular() { + return new Fiesta(); + } + +} diff --git a/abstractFactory/Fiesta.java b/abstractFactory/Fiesta.java new file mode 100644 index 0000000..c6aca10 --- /dev/null +++ b/abstractFactory/Fiesta.java @@ -0,0 +1,10 @@ +package br.padroes.abstractFactory; + +public class Fiesta implements CarroPopular { + + @Override + public void exibirInfoPopular() { + System.out.println("Modelo: Fiesta\nFábrica: Ford\nCategoria:Popular"); + } + +} diff --git a/abstractFactory/FiestaSedan.java b/abstractFactory/FiestaSedan.java new file mode 100644 index 0000000..f3b6bf9 --- /dev/null +++ b/abstractFactory/FiestaSedan.java @@ -0,0 +1,10 @@ +package br.padroes.abstractFactory; + +public class FiestaSedan implements CarroSedan { + + @Override + public void exibirInfoSedan() { + System.out.println("Modelo: Fiesta\nFábrica:Ford\nCategoria:Sedan"); + } + +} diff --git a/abstractFactory/Palio.java b/abstractFactory/Palio.java new file mode 100644 index 0000000..858202f --- /dev/null +++ b/abstractFactory/Palio.java @@ -0,0 +1,10 @@ +package br.padroes.abstractFactory; + +public class Palio implements CarroPopular { + + @Override + public void exibirInfoPopular() { + System.out.println("Modelo: Palio\nFábrica: Fiat\nCategoria:Popular"); + } + +} diff --git a/abstractFactory/Siena.java b/abstractFactory/Siena.java new file mode 100644 index 0000000..6bd4d8e --- /dev/null +++ b/abstractFactory/Siena.java @@ -0,0 +1,10 @@ +package br.padroes.abstractFactory; + +public class Siena implements CarroSedan { + + @Override + public void exibirInfoSedan() { + System.out.println("Modelo: Siena\nFábrica: Fiat\nCategoria:Sedan"); + } + +} From bf61ea7261e4bf6a94428ece5e93c725450ac1cf Mon Sep 17 00:00:00 2001 From: Bruno Dantas Date: Wed, 31 Oct 2018 17:00:05 -0200 Subject: [PATCH 2/2] Adicionando codigo do padrao de projeto templateMethod. --- templateMethod/Cliente.java | 29 ++++++++++++ templateMethod/ModoDeReproducao.java | 5 ++ templateMethod/MusicaMP3.java | 15 ++++++ templateMethod/OrdenadorPorAno.java | 13 +++++ templateMethod/OrdenadorPorAutor.java | 13 +++++ templateMethod/OrdenadorPorEstrela.java | 13 +++++ templateMethod/OrdenadorPorNome.java | 13 +++++ templateMethod/OrdenadorTemplate.java | 26 ++++++++++ templateMethod/PlayList.java | 63 +++++++++++++++++++++++++ 9 files changed, 190 insertions(+) create mode 100644 templateMethod/Cliente.java create mode 100644 templateMethod/ModoDeReproducao.java create mode 100644 templateMethod/MusicaMP3.java create mode 100644 templateMethod/OrdenadorPorAno.java create mode 100644 templateMethod/OrdenadorPorAutor.java create mode 100644 templateMethod/OrdenadorPorEstrela.java create mode 100644 templateMethod/OrdenadorPorNome.java create mode 100644 templateMethod/OrdenadorTemplate.java create mode 100644 templateMethod/PlayList.java diff --git a/templateMethod/Cliente.java b/templateMethod/Cliente.java new file mode 100644 index 0000000..6516f10 --- /dev/null +++ b/templateMethod/Cliente.java @@ -0,0 +1,29 @@ +package br.padroes.templateMethod; + +public class Cliente { + public static void main(String[] args) { + + PlayList minhaPlayList = new PlayList(ModoDeReproducao.porNome); + minhaPlayList.adicionarMusica("Everlong", "Foo Fighters", "1997", 5); + minhaPlayList.adicionarMusica("Song 2", "Blur", "1997", 4); + minhaPlayList.adicionarMusica("American Jesus", "Bad Religion", "1993", + 3); + minhaPlayList.adicionarMusica("No Cigar", "Milencollin", "2001", 2); + minhaPlayList.adicionarMusica("Ten", "Pearl Jam", "1991", 1); + + System.out.println("=== Lista por Nome de Musica ==="); + minhaPlayList.mostrarListaDeReproducao(); + + System.out.println("\n=== Lista por Autor ==="); + minhaPlayList.setModoDeReproducao(ModoDeReproducao.porAutor); + minhaPlayList.mostrarListaDeReproducao(); + + System.out.println("\n=== Lista por Ano ==="); + minhaPlayList.setModoDeReproducao(ModoDeReproducao.porAno); + minhaPlayList.mostrarListaDeReproducao(); + + System.out.println("\n=== Lista por Estrela ==="); + minhaPlayList.setModoDeReproducao(ModoDeReproducao.porEstrela); + minhaPlayList.mostrarListaDeReproducao(); + } +} diff --git a/templateMethod/ModoDeReproducao.java b/templateMethod/ModoDeReproducao.java new file mode 100644 index 0000000..6ca2599 --- /dev/null +++ b/templateMethod/ModoDeReproducao.java @@ -0,0 +1,5 @@ +package br.padroes.templateMethod; + +public enum ModoDeReproducao { + porNome, porAutor, porAno, porEstrela +} diff --git a/templateMethod/MusicaMP3.java b/templateMethod/MusicaMP3.java new file mode 100644 index 0000000..00f3345 --- /dev/null +++ b/templateMethod/MusicaMP3.java @@ -0,0 +1,15 @@ +package br.padroes.templateMethod; + +public class MusicaMP3 { + String nome; + String autor; + String ano; + int estrelas; + + public MusicaMP3(String nome, String autor, String ano, int estrela) { + this.nome = nome; + this.autor = autor; + this.ano = ano; + this.estrelas = estrela; + } +} diff --git a/templateMethod/OrdenadorPorAno.java b/templateMethod/OrdenadorPorAno.java new file mode 100644 index 0000000..ca3ea4a --- /dev/null +++ b/templateMethod/OrdenadorPorAno.java @@ -0,0 +1,13 @@ +package br.padroes.templateMethod; + +public class OrdenadorPorAno extends OrdenadorTemplate { + + @Override + public boolean isPrimeiro(MusicaMP3 musica1, MusicaMP3 musica2) { + if (musica1.ano.compareToIgnoreCase(musica2.ano) <= 0) { + return true; + } + return false; + } + +} diff --git a/templateMethod/OrdenadorPorAutor.java b/templateMethod/OrdenadorPorAutor.java new file mode 100644 index 0000000..79f4904 --- /dev/null +++ b/templateMethod/OrdenadorPorAutor.java @@ -0,0 +1,13 @@ +package br.padroes.templateMethod; + +public class OrdenadorPorAutor extends OrdenadorTemplate { + + @Override + public boolean isPrimeiro(MusicaMP3 musica1, MusicaMP3 musica2) { + if (musica1.autor.compareToIgnoreCase(musica2.autor) <= 0) { + return true; + } + return false; + } + +} diff --git a/templateMethod/OrdenadorPorEstrela.java b/templateMethod/OrdenadorPorEstrela.java new file mode 100644 index 0000000..f4e06de --- /dev/null +++ b/templateMethod/OrdenadorPorEstrela.java @@ -0,0 +1,13 @@ +package br.padroes.templateMethod; + +public class OrdenadorPorEstrela extends OrdenadorTemplate { + + @Override + public boolean isPrimeiro(MusicaMP3 musica1, MusicaMP3 musica2) { + if (musica1.estrelas > musica2.estrelas) { + return true; + } + return false; + } + +} diff --git a/templateMethod/OrdenadorPorNome.java b/templateMethod/OrdenadorPorNome.java new file mode 100644 index 0000000..3acae18 --- /dev/null +++ b/templateMethod/OrdenadorPorNome.java @@ -0,0 +1,13 @@ +package br.padroes.templateMethod; + +public class OrdenadorPorNome extends OrdenadorTemplate { + + @Override + public boolean isPrimeiro(MusicaMP3 musica1, MusicaMP3 musica2) { + if (musica1.nome.compareToIgnoreCase(musica2.nome) <= 0) { + return true; + } + return false; + } + +} diff --git a/templateMethod/OrdenadorTemplate.java b/templateMethod/OrdenadorTemplate.java new file mode 100644 index 0000000..f59027b --- /dev/null +++ b/templateMethod/OrdenadorTemplate.java @@ -0,0 +1,26 @@ +package br.padroes.templateMethod; + +import java.util.ArrayList; + +public abstract class OrdenadorTemplate { + public abstract boolean isPrimeiro(MusicaMP3 musica1, MusicaMP3 musica2); + + protected ArrayList ordenarMusica(ArrayList lista) { + ArrayList novaLista = new ArrayList(); + for (MusicaMP3 musicaMP3 : lista) { + novaLista.add(musicaMP3); + } + + for (int i = 0; i < novaLista.size(); i++) { + for (int j = i; j < novaLista.size(); j++) { + if (!isPrimeiro(novaLista.get(i), novaLista.get(j))) { + MusicaMP3 temp = novaLista.get(j); + novaLista.set(j, novaLista.get(i)); + novaLista.set(i, temp); + } + } + } + + return novaLista; + } +} diff --git a/templateMethod/PlayList.java b/templateMethod/PlayList.java new file mode 100644 index 0000000..e47e795 --- /dev/null +++ b/templateMethod/PlayList.java @@ -0,0 +1,63 @@ +package br.padroes.templateMethod; + +import java.util.ArrayList; + +public class PlayList { + protected ArrayList musicas; + protected OrdenadorTemplate ordenador; + + public PlayList(ModoDeReproducao modo) { + musicas = new ArrayList(); + switch (modo) { + case porAno: + ordenador = new OrdenadorPorAno(); + break; + case porAutor: + ordenador = new OrdenadorPorAutor(); + break; + case porEstrela: + ordenador = new OrdenadorPorEstrela(); + break; + case porNome: + ordenador = new OrdenadorPorNome(); + break; + default: + break; + } + } + + public void setModoDeReproducao(ModoDeReproducao modo) { + ordenador = null; + switch (modo) { + case porAno: + ordenador = new OrdenadorPorAno(); + break; + case porAutor: + ordenador = new OrdenadorPorAutor(); + break; + case porEstrela: + ordenador = new OrdenadorPorEstrela(); + break; + case porNome: + ordenador = new OrdenadorPorNome(); + break; + default: + break; + } + } + + public void adicionarMusica(String nome, String autor, String ano, + int estrela) { + musicas.add(new MusicaMP3(nome, autor, ano, estrela)); + } + + public void mostrarListaDeReproducao() { + ArrayList novaLista = new ArrayList(); + novaLista = ordenador.ordenarMusica(musicas); + + for (MusicaMP3 musica : novaLista) { + System.out.println(musica.nome + " - " + musica.autor + "\n Ano: " + + musica.ano + "\n Estrelas: " + musica.estrelas); + } + } +}