Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.javabom.toby.chapter5.term.미디에이터패턴;

import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.Boeing;
import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.JejuAir;
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;
import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.Airport;

public class MediatorPatternMain {
public static void main(String[] args) {
AirMediator airMediator = new Airport();

Boeing boeing = new Boeing(airMediator);
JejuAir jejuAir = new JejuAir(airMediator);

airMediator.addAirPlane(boeing);
airMediator.addAirPlane(jejuAir);

boeing.tryLanding();
jejuAir.tryLanding();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.javabom.toby.chapter5.term.미디에이터패턴.airplane;

import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;

public abstract class AirPlane {
AirMediator airMediator;

public abstract String getState();

public abstract String getName();

public void tryLanding() {
boolean isPossible = airMediator.alert(this);

System.out.println(getName() + "try landing : " + isPossible);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.javabom.toby.chapter5.term.미디에이터패턴.airplane;

import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;

public class Boeing extends AirPlane {
public Boeing(AirMediator airMediator) {
this.airMediator = airMediator;
}

@Override
public String getName() {
return "Boeing Airplane";
}

@Override
public String getState() {
return "LANDING";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.javabom.toby.chapter5.term.미디에이터패턴.airplane;

import com.javabom.toby.chapter5.term.미디에이터패턴.mediator.AirMediator;

public class JejuAir extends AirPlane {
public JejuAir(AirMediator airMediator) {
this.airMediator = airMediator;
}

@Override
public String getName() {
return "Jeju Airplane";
}

@Override
public String getState() {
return "FLIGHT";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.javabom.toby.chapter5.term.미디에이터패턴.mediator;

import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.AirPlane;

public interface AirMediator {
void addAirPlane(AirPlane airPlane);

boolean alert(AirPlane airPlane);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.javabom.toby.chapter5.term.미디에이터패턴.mediator;

import com.javabom.toby.chapter5.term.미디에이터패턴.airplane.AirPlane;

import java.util.ArrayList;
import java.util.List;

public class Airport implements AirMediator {
private List<AirPlane> airPlanes;

public Airport() {
airPlanes = new ArrayList<>();
}

@Override
public void addAirPlane(final AirPlane airPlane) {
this.airPlanes.add(airPlane);
}

@Override
public boolean alert(final AirPlane airPlane) {
return airPlanes.stream()
.filter(cur -> !cur.equals(airPlane))
.map(AirPlane::getState)
.anyMatch(state -> state.equals("FLIGHT"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.javabom.toby.chapter5.term.브릿지_패턴;

import com.javabom.toby.chapter5.term.브릿지_패턴.draw.Draw;
import com.javabom.toby.chapter5.term.브릿지_패턴.draw.PencilDraw;
import com.javabom.toby.chapter5.term.브릿지_패턴.draw.BrushDraw;
import com.javabom.toby.chapter5.term.브릿지_패턴.shape.Ellipse;
import com.javabom.toby.chapter5.term.브릿지_패턴.shape.Square;

public class BridgePatternMain {
public static void main(String[] args) {
Draw pencilDraw = new PencilDraw();
Draw brushDraw = new BrushDraw();

Ellipse ellipse = new Ellipse(pencilDraw);
Square square = new Square(brushDraw);

ellipse.drawShape();
square.drawShape();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.javabom.toby.chapter5.term.브릿지_패턴.draw;

public class BrushDraw implements Draw {
@Override
public void draw() {
System.out.println("draw by draw");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.javabom.toby.chapter5.term.브릿지_패턴.draw;

public interface Draw {
void draw();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.javabom.toby.chapter5.term.브릿지_패턴.draw;

public class PencilDraw implements Draw {
@Override
public void draw() {
System.out.println("draw by pencil");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.javabom.toby.chapter5.term.브릿지_패턴.shape;

import com.javabom.toby.chapter5.term.브릿지_패턴.draw.Draw;

public class Ellipse extends Shape {
public Ellipse(final Draw draw) {
super(draw);
}

@Override
public void drawShape() {
this.draw.draw();
System.out.println("This is Ellipse");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.javabom.toby.chapter5.term.브릿지_패턴.shape;

import com.javabom.toby.chapter5.term.브릿지_패턴.draw.Draw;

public abstract class Shape {
protected Draw draw;

public Shape(final Draw draw) {
this.draw = draw;
}

abstract public void drawShape();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.javabom.toby.chapter5.term.브릿지_패턴.shape;

import com.javabom.toby.chapter5.term.브릿지_패턴.draw.Draw;

public class Square extends Shape {

public Square(final Draw draw) {
super(draw);
}

@Override
public void drawShape() {
this.draw.draw();
System.out.println("This is Square");
}
}