Skip to content

Commit 6e13a76

Browse files
authored
Merge pull request #29 from ShanukaPrabodha/Design-Pattern-Contd
Implementing strategy design pattern
2 parents eef5843 + 835c81f commit 6e13a76

11 files changed

+155
-0
lines changed
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+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package design.pattern.stratergy;
2+
3+
public class TestDuck {
4+
5+
/**
6+
* @param args
7+
*/
8+
public static void main(String[] args) {
9+
10+
System.out.println("Start Mollard Duck");
11+
System.out.println("==================");
12+
Duck mollard = new MollardDuck();
13+
mollard.performFly();
14+
mollard.performQuack();
15+
16+
System.out.println("Start Model Duck");
17+
System.out.println("==================");
18+
Duck model = new ModelDuck();
19+
20+
model.performFly();
21+
model.setFlyBehaviour(new FlyRocketPower());
22+
model.performFly();
23+
24+
model.performQuack();
25+
model.setQuackBehaviour(new ModelQuack());
26+
model.performQuack();
27+
}
28+
}

0 commit comments

Comments
 (0)