Definisi
State Pattern adalah solusi untuk masalah bagaimana membuat perilaku tergantung pada state. Pola state ini tidak menentukan mana transisi state yang akan didefinisikan. Pilihannya adalah duam yakni: "konteks" objek atau setiap state individu berasal.Keuntungannya adalah kemudahan untuk menambah kelas baru yang berasal dari state.
Kelemahannya adalah setiap kelas turunan dari state memliki pengetahuan sambungan yang memperkenalkan dependensi antara subclass.
Implementasi
1. Buatlah interface dengan nama PlayerState
public interface PlayerState {
void action(Player p);
}
2. Buatlah tiga kelas berbeda dengan state yang berbeda. Pada contoh dibawah ini saya menamai HealthyState, SurvivalState, DeadState.
public class HealthyState implements PlayerState {
@Override
public void action(Player p) {
p.attack();
p.fireBumb();
p.fireGunblade();
p.fireLaserPistol();
}
}
public class SurvivalState implements PlayerState {
@Override
public void action(Player p) {
p.survive();
p.firePistol();
}
}
public class DeadState implements PlayerState {
@Override
public void action(Player p) {
p.dead();
}
}
3. Buat GameContext.java
public class GameContext {
private PlayerState state = null;
private Player player = new Player();
public void setState(PlayerState state) {
this.state = state;
}
public void gameAction() {
state.action(player);
}
}
4. Buat GameTest.java
public class GameTest {
public static void main(String[] args) {
GameContext context = new GameContext();
context.setState(new HealthyState());
context.gameAction();
System.out.println("*****");
context.setState(new SurvivalState());
context.gameAction();
System.out.println("*****");
context.setState(new DeadState());
context.gameAction();
System.out.println("*****");
}
}
Output
Attack
Fire Bomb
Fire Gunblade
Laser Pistols
*****
Surviving!
Fire Pistol
*****
Dead! Game Over
*****
Tidak ada komentar:
Posting Komentar