Questo è in java:
=== Interfaccia Strategy ===
public interface CamminataStrategy{ void cammina();}
===ConcreteStrategy ===
public class CamminataStrategyMillepiede implements CamminataStrategy{
public void cammina(){System.out.print("Cammino a 1234 zampe");}
}
=== Classe astratta EssereVivente ===
public class abstract EssereVivente implements CamminataStrategy{}
Adesso dopo che ho una sfilza di classi concrete che implementano CamminataStrategy in una classe posso scegliere quale utilizzare ma in che modo?
=== I MODO ===
public class Millepiedi extends EssereVivente{
private CamminataStrategy c = new CamminataStrategyMillepiedi();
@Override
public void cammina(){ c.cammina();}
}
=== II MODO ===
public class Millepiedi extends EssereVivente{
private CamminataStrategy c;
public Millepiedi(CamminataStrategy c){this.c = c;}
@Override
public void cammina(){ c.cammina();}
}