C:\Users\Sergio\trilha java básico/Reprodução/Singleton/Comportamentos
package one.digitalinnovation.gofFacede;
import subsistema1crm.CrmService;
public class Facede {
public void migrarCliente(String nome, String cep) {
String cidade = subsistema2cep.CepApi.getInstancia().recuperarCidade(cep);
String estado = subsistema2cep.CepApi.getInstancia().recuperarEstado(cep);
CrmService.gravarCiente(nome, cep, cidade, estado);
}
} package one.digitalinnovation.gofSingleton;
public class SingletonEager { private static SingletonEager instancia = new SingletonEager();
private SingletonEager() {
super();
}
public static SingletonEager getInstancia() {
return instancia;
}
} package one.digitalinnovation.gofSingleton;
/**
- Singleton "preguicoso" */
public class SingletonLazy {
private static SingletonLazy instancia;
private SingletonLazy( ) {
super();
}
public static SingletonLazy getInstancia() {
if (instancia == null) {
instancia = new SingletonLazy();
}
return instancia;
}
} package one.digitalinnovation.gofSingleton; /**
- Singleton " Lazy Holder"
- "https://stackoverflow.com/a/24018148 ">Referencia */
public class SingletonLazyHolder {
private static class InstanceHolder {
public static SingletonLazyHolder instancia = new SingletonLazyHolder();
}
private SingletonLazyHolder( ) {
super();
}
public static SingletonLazyHolder getInstancia() {
return InstanceHolder.instancia;
}
} package one.digitalinnovation.gofStrateg;
public interface Comportamento {
void mover();
} package one.digitalinnovation.gofStrateg;
public class Comportamentoagressivo implements Comportamento {
@Override
public void mover() {
System.out.println("Movendo-se agressivamente.....");
}
} package one.digitalinnovation.gofStrateg;
public class ComportamentoDefensivo implements Comportamento {
@Override
public void mover() {
System.out.println("Movento-se defencisamente.....");
}
} package one.digitalinnovation.gofStrateg;
public class ComportamentoNormal implements Comportamento {
@Override
public void mover() {
System.out.println("Movento-se normalmente");
}
} package one.digitalinnovation.gofStrateg;
public class Robo {
private Comportamento comportamento;
public void setComportamento(Comportamento comportamento) {
this.comportamento = comportamento;
}
public void mover() {
comportamento.mover();
}
} package one.digitalinnovation.gofStrateg;
import one.digitalinnovation.gofFacede.Facede; import one.digitalinnovation.gofSingleton.SingletonEager; import one.digitalinnovation.gofSingleton.SingletonLazy; import one.digitalinnovation.gofSingleton.SingletonLazyHolder;
public class test {
public static void main(String[] args) {
//Singleton
SingletonLazy lazy = SingletonLazy.getInstancia();
System.out.println(lazy);
lazy = SingletonLazy.getInstancia();
System.out.println(lazy);
SingletonEager eager = SingletonEager.getInstancia();
System.out.println(eager);
eager = SingletonEager.getInstancia();
System.out.println(eager);
SingletonLazyHolder lazyholder = SingletonLazyHolder.getInstancia();
System.out.println(lazyholder);
lazyholder = SingletonLazyHolder.getInstancia();
System.out.println(lazyholder);
// Strateg
Comportamento defensivo = new ComportamentoDefensivo();
Comportamento normal = new ComportamentoNormal();
Comportamento agressivo = new Comportamentoagressivo();
Robo robo = new Robo();
robo.setComportamento(normal);
robo.mover();
robo.mover();
robo.setComportamento(defensivo);
robo.mover();
robo.setComportamento(agressivo);
robo.mover();
// Facede
Facede facede = new Facede();
facede.migrarCliente("Venilton", "14881788");
}
} package subsistema1crm;
public class CrmService {
private CrmService() {
super();
}
public static void gravarCiente(String nome, String cep, String cidade, String estado) {
System.out.println("Cliente salvo no sistema do CRM");
System.out.println(nome);
System.out.println(cep);
System.out.println(cidade);
System.out.println(estado);
}
} package subsistema2cep;
public class CepApi {
private static CepApi instancia = new CepApi();
private CepApi() {
super();
}
public static CepApi getInstancia() {
return instancia;
}
public String recuperarCidade(String cep) {
return "Araraquara";
}
public String recuperarEstado(String nome) {
return "SP";
}
}