File tree Expand file tree Collapse file tree 10 files changed +165
-0
lines changed
src/main/java/com/hyeonah/javalabs/designpattern/strategy Expand file tree Collapse file tree 10 files changed +165
-0
lines changed Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ package com .hyeonah .javalabs .designpattern .strategy .move ;
2+
3+ public interface MovingStrategy {
4+
5+ void move ();
6+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments