Mega Code Archive

 
Categories / Java Tutorial / Class Definition
 

Dynamically changing the behavior of an object via composition (the State design pattern)

abstract class Actor {   public abstract void act(); } class HappyActor extends Actor {   public void act() {     System.out.println("HappyActor");   } } class SadActor extends Actor {   public void act() {     System.out.println("SadActor");   } } class Stage {   private Actor actor = new HappyActor();   public void change() {     actor = new SadActor();   }   public void performPlay() {     actor.act();   } } public class MainClass {   public static void main(String[] args) {     Stage stage = new Stage();     stage.performPlay();     stage.change();     stage.performPlay();   } } HappyActor SadActor