Jumat, 02 Desember 2016

Design Pattern: State Pattern

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