Commit 0cc4d76b authored by Josue's avatar Josue

Patron Strategy

parent 6f3ac9be
package org.example.designpatterns.strategy;
import org.example.designpatterns.strategy.strategy.AntivirusAvanzado;
import org.example.designpatterns.strategy.strategy.AntivirusSimple;
import org.example.designpatterns.strategy.strategy.Contexto;
public class App {
public static void main(String[] args) {
Contexto contexto = new Contexto(new AntivirusAvanzado());
contexto.ejecutar();
}
}
package org.example.designpatterns.strategy.strategy;
public abstract class AnalisisAvanzado implements IStrategy{
@Override
public void analizar() {
iniciar();
analizarMemoria();
analizarKeyLoggers();
analizarRootKits();
descomprimirZip();
detener();
}
abstract void iniciar();
abstract void analizarMemoria();
abstract void analizarKeyLoggers();
abstract void analizarRootKits();
abstract void descomprimirZip();
abstract void detener();
}
package org.example.designpatterns.strategy.strategy;
public abstract class AnalisisSimple implements IStrategy{
@Override
public void analizar() {
iniciar();
saltarZip();
detener();
}
abstract void iniciar();
abstract void saltarZip();
abstract void detener();
}
package org.example.designpatterns.strategy.strategy;
public class AntivirusAvanzado extends AnalisisAvanzado{
@Override
void iniciar() {
System.out.println("Antivirus Simple - Análisis simple iniciado");
}
@Override
void analizarMemoria() {
try {
System.out.println("Analizando Memoria RAM.....");
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
void analizarKeyLoggers() {
try {
System.out.println("Analizando en busca de KeyLoggers.....");
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
void analizarRootKits() {
try {
System.out.println("Analizando en busca de RootKits.....");
Thread.sleep(1500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
void descomprimirZip() {
try {
System.out.println("Analizando archivos '.zip'.....");
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
void detener() {
System.out.println("Antivirus Simple - Análisis simple finalizado");
}
}
package org.example.designpatterns.strategy.strategy;
public class AntivirusSimple extends AnalisisSimple{
@Override
void iniciar() {
System.out.println("Antivirus Simple - Análisis simple iniciado");
}
@Override
void saltarZip() {
try {
System.out.println("Analizando.....");
Thread.sleep(2500);
System.out.println("No se pudo analizar archivos con extensión '.zip'");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
void detener() {
System.out.println("Antivirus Simple - Análisis simple finalizado");
}
}
package org.example.designpatterns.strategy.strategy;
public class Contexto {
private IStrategy strategy;
public Contexto(IStrategy strategy) {
this.strategy = strategy;
}
public void ejecutar() {
this.strategy.analizar();
}
}
package org.example.designpatterns.strategy.strategy;
public interface IStrategy {
void analizar();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment