Skip to content

Instantly share code, notes, and snippets.

@crisine
Created March 31, 2022 11:19
Show Gist options
  • Save crisine/517d1cfcfb8d09a5d856fba318317d02 to your computer and use it in GitHub Desktop.
Save crisine/517d1cfcfb8d09a5d856fba318317d02 to your computer and use it in GitHub Desktop.
템플릿 메서드 응용
package gameLevel;
public class AdvancedLevel extends PlayerLevel {
@Override
public void run() {
System.out.println("빨리 달린다.");
}
@Override
public void jump() {
System.out.println("높이 점프한다.");
}
@Override
public void turn() {
System.out.println("턴 불가.");
}
@Override
public void showLevelMessage() {
System.out.println("-중급자 레벨-");
}
}
package gameLevel;
public class BeginnerLevel extends PlayerLevel {
@Override
public void run() {
System.out.println("천천히 달린다.");
}
@Override
public void jump() {
System.out.println("점프 불가.");
}
@Override
public void turn() {
System.out.println("턴 불가");
}
@Override
public void showLevelMessage() {
System.out.println("-초보자 레벨-");
}
}
package gameLevel;
public class MainBoard {
public static void main(String[] args) {
Player player = new Player();
player.play(1);
AdvancedLevel aLevel = new AdvancedLevel();
player.upgradeLevel(aLevel);
player.play(2);
SuperLevel sLevel = new SuperLevel();
player.upgradeLevel(sLevel);
player.play(3);
}
}
package gameLevel;
public class Player {
private PlayerLevel level;
public Player() {
level = new BeginnerLevel();
level.showLevelMessage();
}
public PlayerLevel getLevel() {
return level;
}
public void upgradeLevel(PlayerLevel level) {
this.level = level;
level.showLevelMessage();
}
public void play(int count) {
level.go(count);
}
}
package gameLevel;
public abstract class PlayerLevel {
public abstract void run();
public abstract void jump();
public abstract void turn();
public abstract void showLevelMessage();
final public void go(int count) {
run();
for (int i = 0; i < count; i++) {
jump();
}
turn();
}
}
package gameLevel;
public class SuperLevel extends PlayerLevel {
@Override
public void run() {
System.out.println("엄청 빨리 달린다.");
}
@Override
public void jump() {
System.out.println("아주 높이 점프한다.");
}
@Override
public void turn() {
System.out.println("한 바퀴 돈다.");
}
@Override
public void showLevelMessage() {
System.out.println("-고급자 레벨-");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment