Skip to content

Commit ace8922

Browse files
authored
Merge pull request #201 from Java-Bom/toby/chapter5-5
토비 챕터 5.3 ~ 5.5
2 parents 626b9ba + 41bc05e commit ace8922

File tree

13 files changed

+198
-0
lines changed

13 files changed

+198
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.javabom.toby.chapter5.term.미디에이터패턴;
2+
3+
import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.Boeing;
4+
import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.JejuAir;
5+
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;
6+
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.Airport;
7+
8+
public class MediatorPatternMain {
9+
public static void main(String[] args) {
10+
AirMediator airMediator = new Airport();
11+
12+
Boeing boeing = new Boeing(airMediator);
13+
JejuAir jejuAir = new JejuAir(airMediator);
14+
15+
airMediator.addAirPlane(boeing);
16+
airMediator.addAirPlane(jejuAir);
17+
18+
boeing.tryLanding();
19+
jejuAir.tryLanding();
20+
}
21+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.javabom.toby.chapter5.term.미디에이터패턴.airplane;
2+
3+
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;
4+
5+
public abstract class AirPlane {
6+
AirMediator airMediator;
7+
8+
public abstract String getState();
9+
10+
public abstract String getName();
11+
12+
public void tryLanding() {
13+
boolean isPossible = airMediator.alert(this);
14+
15+
System.out.println(getName() + "try landing : " + isPossible);
16+
}
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.javabom.toby.chapter5.term.미디에이터패턴.airplane;
2+
3+
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;
4+
5+
public class Boeing extends AirPlane {
6+
public Boeing(AirMediator airMediator) {
7+
this.airMediator = airMediator;
8+
}
9+
10+
@Override
11+
public String getName() {
12+
return "Boeing Airplane";
13+
}
14+
15+
@Override
16+
public String getState() {
17+
return "LANDING";
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.javabom.toby.chapter5.term.미디에이터패턴.airplane;
2+
3+
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;
4+
5+
public class JejuAir extends AirPlane {
6+
public JejuAir(AirMediator airMediator) {
7+
this.airMediator = airMediator;
8+
}
9+
10+
@Override
11+
public String getName() {
12+
return "Jeju Airplane";
13+
}
14+
15+
@Override
16+
public String getState() {
17+
return "FLIGHT";
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.javabom.toby.chapter5.term.미디에이터패턴.mediator;
2+
3+
import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.AirPlane;
4+
5+
public interface AirMediator {
6+
void addAirPlane(AirPlane airPlane);
7+
8+
boolean alert(AirPlane airPlane);
9+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.javabom.toby.chapter5.term.미디에이터패턴.mediator;
2+
3+
import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.AirPlane;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
public class Airport implements AirMediator {
9+
private List<AirPlane> airPlanes;
10+
11+
public Airport() {
12+
airPlanes = new ArrayList<>();
13+
}
14+
15+
@Override
16+
public void addAirPlane(final AirPlane airPlane) {
17+
this.airPlanes.add(airPlane);
18+
}
19+
20+
@Override
21+
public boolean alert(final AirPlane airPlane) {
22+
return airPlanes.stream()
23+
.filter(cur -> !cur.equals(airPlane))
24+
.map(AirPlane::getState)
25+
.anyMatch(state -> state.equals("FLIGHT"));
26+
}
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.javabom.toby.chapter5.term.브릿지_패턴;
2+
3+
import com.javabom.toby.chapter5.term.브릿지_패턴.draw.Draw;
4+
import com.javabom.toby.chapter5.term.브릿지_패턴.draw.PencilDraw;
5+
import com.javabom.toby.chapter5.term.브릿지_패턴.draw.BrushDraw;
6+
import com.javabom.toby.chapter5.term.브릿지_패턴.shape.Ellipse;
7+
import com.javabom.toby.chapter5.term.브릿지_패턴.shape.Square;
8+
9+
public class BridgePatternMain {
10+
public static void main(String[] args) {
11+
Draw pencilDraw = new PencilDraw();
12+
Draw brushDraw = new BrushDraw();
13+
14+
Ellipse ellipse = new Ellipse(pencilDraw);
15+
Square square = new Square(brushDraw);
16+
17+
ellipse.drawShape();
18+
square.drawShape();
19+
}
20+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.javabom.toby.chapter5.term.브릿지_패턴.draw;
2+
3+
public class BrushDraw implements Draw {
4+
@Override
5+
public void draw() {
6+
System.out.println("draw by draw");
7+
}
8+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.javabom.toby.chapter5.term.브릿지_패턴.draw;
2+
3+
public interface Draw {
4+
void draw();
5+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.javabom.toby.chapter5.term.브릿지_패턴.draw;
2+
3+
public class PencilDraw implements Draw {
4+
@Override
5+
public void draw() {
6+
System.out.println("draw by pencil");
7+
}
8+
}

0 commit comments

Comments
 (0)