[디자인 패턴] Strategy (ft. 오바와치)Back-end/Java, Kotlin2021. 3. 27. 13:19
Table of Contents
회사에서 !!
갓사수의 Strategy 패턴을 보고 feel을 받은 나는
오버워치의 에코 영웅을 대상으로 전략 패턴을 작성해 보았다.
오버워치의 4번째 옴닉 영웅인 에코는 자신을 상대 영웅으로 복사하여 전투에 임할 수 있다.
public interface Echo {
public void attack();
public OverwarchHeros getSymbol();
}
에코 인터페이스는 공격과 심볼을 표시할 수 있다.
public enum OverwarchHeros {
H01("Soldier76"), H02("Reinhardt"), H03("Tracer");
private String name;
OverwarchHeros(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
심볼은 위와 같은 enum으로 작성되어 있다.
아래는 Echo를 상속 받은 각 구현체 클라쓰들이다.
public class Soldier76 implements Echo {
@Override
public void attack() {
System.out.println("솔져76: 펄스소총 두두두둗루 !! 돼지고기 두루치기 마이쪙!");
}
@Override
public OverwarchHeros getSymbol() {
return OverwarchHeros.H01;
}
}
public class Reinhardt implements Echo {
@Override
public void attack() {
System.out.println("라인하르트: 로캣해머 수우웅ㅇ");
}
@Override
public OverwarchHeros getSymbol() {
return OverwarchHeros.H02;
}
}
public class Tracer implements Echo {
@Override
public void attack() {
System.out.println("트레이서: 펄스 쌍권총 피퓨부부부");
}
@Override
public OverwarchHeros getSymbol() {
return OverwarchHeros.H03;
}
}
Main함수다 !
public class Main {
public static void main(String[] args) {
// Echo echo = new Soldier76();
List<Echo> echos
= new ArrayList<>(Arrays.asList(new Soldier76(), new Reinhardt(), new Tracer()));
for (Echo echo : echos) {
switch (echo.getSymbol()) {
case H01:
out.print("첫 번째 영웅 : ");
break;
case H02:
out.print("두 번째 영웅 : ");
break;
case H03:
out.print("세 번째 영웅 : ");
break;
}
out.println(echo.getSymbol().getName());
echo.attack();
out.println(); // just LF
}
}
}
case 문을 통해서 enum에 따라서 분기를 시켜 놓앗당 ..
이로써 .. 회사에서 본 갓사수햄님의 코드를 부분적으로 카피해서 집에 가져다 놓을 수 있게 되었다.
자 이제 맥주를 마시자 !
'Back-end > Java, Kotlin' 카테고리의 다른 글
Reflection : 그누므 리플렉션이 모야 !! (ft. 애노떼이숀, 쩨네릭) (0) | 2021.04.08 |
---|---|
[디자인 패턴] Observer (0) | 2021.03.29 |
json인듯 아닌듯 한 데이터를 jsonParsing하기 (0) | 2021.03.14 |
외부에서 다운받은 jar 추가하기 (0) | 2021.03.14 |
스프링 위에 공통 클래스를 만들기 (0) | 2021.03.07 |
@philo0407 :: Philo의 다락방
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!