Skip to content

Instantly share code, notes, and snippets.

@garudareiga
Last active August 29, 2015 14:12
Show Gist options
  • Save garudareiga/227649a29eb478234c12 to your computer and use it in GitHub Desktop.
Save garudareiga/227649a29eb478234c12 to your computer and use it in GitHub Desktop.
Strategy Design Pattern
public interface FlyBehavior {
public void fly();
}
public interface QuackBehavior {
public void quack();
}
public class FlyWithWings implements FlyBehavior {
public void fly() { System.out.println("flying!"); }
}
public class FlyNoWay implements FlyBehavior {
public void fly() { System.out.println("no flying!"); }
}
public class Quack implements QuackBehavior {
public void quack() { System.out.println("Quack"); }
}
public class QuackMute implements QuackBehavior {
public void quack() { System.out.println("Silence"); }
}
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck() {}
public void setFlyBehavior(FlyBehavior fb) { flyBehavior = fb; }
public void setQuackBehavior(QuackBehavior qb) { quackBehavior = qb; }
public abstract void display();
public void performFly() { flyBehavior.fly(); }
public void performQuack() { quackBehavior.quack(); }
public void swim() { System.out.println("All ducks float!"); }
}
public class RedHeadDuck extends Duck {
public RedHeadDuck() {
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
public void display() { System.out.println("Read Head Duck"); }
}
public class DecoyDuck extends Duck {
public DecoyDuck() {
setFlyBehavior(new FlyNoWay());
setQuackBehavior(new QuackMute());
}
public void display() { System.out.println("Read Head Duck"); }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment