Skip to content

Commit 67f2c2d

Browse files
Implementing strategy design pattern
1 parent 7678948 commit 67f2c2d

11 files changed

Lines changed: 155 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package design.pattern.stratergy;
2+
3+
public abstract class Duck {
4+
5+
IFlyBehaviour flyBehaviour;
6+
7+
IQuackBehaviour quackBehaviour;
8+
9+
public abstract void display();
10+
11+
public void performFly(){
12+
flyBehaviour.fly();
13+
}
14+
15+
public void performQuack(){
16+
quackBehaviour.quack();
17+
}
18+
19+
public void swim(){
20+
System.out.println("All ducks float even Decoy");
21+
}
22+
23+
public void setFlyBehaviour(IFlyBehaviour flyBehaviour) {
24+
this.flyBehaviour = flyBehaviour;
25+
}
26+
27+
public void setQuackBehaviour(IQuackBehaviour quackBehaviour) {
28+
this.quackBehaviour = quackBehaviour;
29+
}
30+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package design.pattern.stratergy;
2+
3+
public class FlyNoWay implements IFlyBehaviour{
4+
5+
@Override
6+
public void fly() {
7+
System.out.println("I can't fly");
8+
}
9+
}
10+
11+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package design.pattern.stratergy;
2+
3+
public class FlyRocketPower implements IFlyBehaviour{
4+
5+
@Override
6+
public void fly() {
7+
System.out.println("I am flying with a rocket");
8+
}
9+
}
10+
11+
12+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package design.pattern.stratergy;
2+
3+
public class FlyWithWings implements IFlyBehaviour{
4+
5+
@Override
6+
public void fly() {
7+
System.out.println("I am flying with wings");
8+
}
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package design.pattern.stratergy;
2+
3+
public interface IFlyBehaviour {
4+
5+
public void fly();
6+
}
7+
8+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package design.pattern.stratergy;
2+
3+
public interface IQuackBehaviour {
4+
5+
public void quack();
6+
}
7+
8+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
package design.pattern.stratergy;
3+
4+
public class ModelDuck extends Duck{
5+
6+
public ModelDuck() {
7+
quackBehaviour = new Quack();
8+
flyBehaviour = new FlyNoWay();
9+
}
10+
11+
@Override
12+
public void display() {
13+
System.out.println("I am a model Duck");
14+
}
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package design.pattern.stratergy;
2+
3+
public class ModelQuack implements IQuackBehaviour{
4+
5+
@Override
6+
public void quack() {
7+
System.out.println("Quack Model duck");
8+
}
9+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package design.pattern.stratergy;
2+
3+
public class MollardDuck extends Duck{
4+
5+
public MollardDuck() {
6+
quackBehaviour = new Quack();
7+
flyBehaviour = new FlyWithWings();
8+
}
9+
10+
@Override
11+
public void display() {
12+
System.out.println("I am a real Mollard Duck.");
13+
}
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package design.pattern.stratergy;
2+
3+
public class Quack implements IQuackBehaviour{
4+
5+
@Override
6+
public void quack() {
7+
System.out.println("Quack..Quack...");
8+
}
9+
}
10+
11+

0 commit comments

Comments
 (0)