Skip to content

Commit 077bf39

Browse files
committed
feat: Add strategy pattern
1 parent f09989f commit 077bf39

File tree

10 files changed

+165
-0
lines changed

10 files changed

+165
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.hyeonah.javalabs.designpattern.strategy;
2+
3+
import com.hyeonah.javalabs.designpattern.strategy.move.MovingStrategy;
4+
5+
/**
6+
* Created by hyeoni90 on 2021-03-03
7+
*/
8+
public class Animal {
9+
private final String name;
10+
11+
private MovingStrategy movingStrategy;
12+
13+
public Animal(final String name) {
14+
this.name = name;
15+
}
16+
17+
public String getName() {
18+
return name;
19+
}
20+
21+
public void move() {
22+
movingStrategy.move();
23+
}
24+
25+
public void setMovingStrategy(final MovingStrategy movingStrategy) {
26+
this.movingStrategy = movingStrategy;
27+
}
28+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hyeonah.javalabs.designpattern.strategy;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Bird extends Animal {
7+
8+
public Bird(final String name) {
9+
super(name);
10+
}
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.hyeonah.javalabs.designpattern.strategy;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Cat extends Animal {
7+
8+
public Cat(final String name) {
9+
super(name);
10+
}
11+
12+
public void cry() {
13+
System.out.println("운다");
14+
}
15+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hyeonah.javalabs.designpattern.strategy;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Dog extends Animal {
7+
8+
public Dog(final String name) {
9+
super(name);
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hyeonah.javalabs.designpattern.strategy;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Fish extends Animal {
7+
8+
public Fish(final String name) {
9+
super(name);
10+
}
11+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.hyeonah.javalabs.designpattern.strategy;
2+
3+
import com.hyeonah.javalabs.designpattern.strategy.move.Fly;
4+
import com.hyeonah.javalabs.designpattern.strategy.move.Swim;
5+
import com.hyeonah.javalabs.designpattern.strategy.move.Walk;
6+
7+
/**
8+
* Created by hyeoni90 on 2021-03-03
9+
*/
10+
public class Main {
11+
12+
public static void main(final String[] args) {
13+
// final Cat cat = new Cat("고양이");
14+
// final Dog dog = new Dog("강아지");
15+
// final Fish fish = new Fish("물고기");
16+
// final Bird bird = new Bird("새");
17+
//
18+
// cat.move();
19+
// dog.move();
20+
// fish.move();
21+
// bird.move();
22+
23+
// 두개의 차이가 뭘까?
24+
// final Animal cat = new Cat("고양이");
25+
final Cat cat = new Cat("고양이");
26+
cat.cry();
27+
28+
final Dog dog = new Dog("강아지");
29+
final Fish fish = new Fish("물고기");
30+
final Bird bird = new Bird("새");
31+
32+
cat.setMovingStrategy(new Fly());
33+
System.out.print(cat.getName() + " ");
34+
cat.move();
35+
36+
dog.setMovingStrategy(new Swim());
37+
System.out.print(dog.getName() + " ");
38+
dog.move();
39+
dog.setMovingStrategy(new Walk());
40+
dog.move();
41+
42+
fish.setMovingStrategy(new Fly());
43+
System.out.print(fish.getName() + " ");
44+
fish.move();
45+
46+
bird.setMovingStrategy(new Walk());
47+
System.out.print(bird.getName() + " ");
48+
bird.move();
49+
}
50+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hyeonah.javalabs.designpattern.strategy.move;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Fly implements MovingStrategy {
7+
@Override
8+
public void move() {
9+
System.out.println("날아간다.");
10+
}
11+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.hyeonah.javalabs.designpattern.strategy.move;
2+
3+
public interface MovingStrategy {
4+
5+
void move();
6+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hyeonah.javalabs.designpattern.strategy.move;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Swim implements MovingStrategy {
7+
@Override
8+
public void move() {
9+
System.out.println("헤엄친다.");
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.hyeonah.javalabs.designpattern.strategy.move;
2+
3+
/**
4+
* Created by hyeoni90 on 2021-03-03
5+
*/
6+
public class Walk implements MovingStrategy {
7+
@Override
8+
public void move() {
9+
System.out.println("걸어간다.");
10+
}
11+
}

0 commit comments

Comments
 (0)