Escolar Documentos
Profissional Documentos
Cultura Documentos
singleton e strategy
Padrão de projeto de software
Cada padrão é como uma planta de construção que você pode customizar
para resolver um problema de projeto particular em seu código (Refactoring
Guru, 2023)
Os 5 princípios da POO
S — Single Responsiblity Principle (Princípio da responsabilidade única)
O — Open-Closed Principle (Princípio Aberto-Fechado)
L — Liskov Substitution Principle (Princípio da substituição de Liskov)
I — Interface Segregation Principle (Princípio da Segregação da Interface)
D — Dependency Inversion Principle (Princípio da inversão da dependência)
Princípios SOLID
Uma classe irá gerar apenas um objeto que estará disponível em todo domínio
da aplicação
Falta de rastreabilidade;
Oferece um ponto de acesso global, porém sem desvantagens das variáveis globais
Valores globais (estáticos) mas sem vazamento de dados
A classe deve gerenciar a própria instância dela para evitar que outras instancias sejam
criadas
A classe armazena a referência de sua instância
class Main {
public static void main(String[] args) {
SemSingleton s01 = new SemSingleton("t001");
SemSingleton s02 = new SemSingleton("t002");
System.out.println(tr.custoTransporte(100));
System.out.println(tr2.custoTransporte(100));
}
Exemplo II Strategic
@Override
public String tipoTransporte() { return "Carro"; }
@Override
public double custoTransporte(int km) { return km*10; }
}
Tipo enum como meio de aplicar o
Strategic
Um tipo enum é um tipo de campo que define um conjunto fixo de constantes
(static final), sendo como uma lista de valores pré-definidos
enum nomes3 {
B1 {
public int constante() { return 11;}
},
B2 {
public int constante() { return 22;}
},
B3 {
public int constante() { return 33;}
};
nomes3 n3 = nomes3.B1;
System.out.println(n3.constante());
nomes2 n2 = nomes2.B3;
System.out.println(n2.getvalor());
NORMAL{
@Override
double calcularImposto(double preco) { return preco * 0.2; } },
IDOSOS{
@Override
double calcularImposto(double preco) { return preco * 0.1; } },
ESTUDANTES{
@Override
double calcularImposto(double preco) { return preco * 0.15; } };