lab-padroes-projeto-java icon indicating copy to clipboard operation
lab-padroes-projeto-java copied to clipboard

C:\Users\Sergio\trilha java básico/Reprodução/Singleton/Comportamentos

Open Sergioprojgithub opened this issue 1 year ago • 0 comments

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";
}

}

Sergioprojgithub avatar Aug 18 '24 10:08 Sergioprojgithub