Monday, December 19, 2011

Strategy design pattern (Masatosan version)

I've seen countless Strategy pattern described on the web and none of them really get me so far. They use Dog, Cat, Coffee, even worse, JComponent.. sure I can "programming to interface not implementation."

Still not getting it without writing my own strategy pattern with my own words. (Doesn't matter what terms I use, the point is I get the concept!)

Here is my version of strategy design pattern:

    

public interface Console {
    public void launchGame();
}

public class XBox360 implements Console {
    public void launchGame() {
        System.out.print("I see the ring of death!");
    } 
}

public class PlayStation3 implements Console {
    public void launchGame() {
        System.out.println("SONY is being hacked by a kid");
    }
}

public class Wii implements Console {
    public void launchGame() {
        System.out.println("I think my Wii controller is in my neighbor's backyard");
    }
}

public class Me {
    private Console console = null;

    public Me(Cosole console) {
        this.console = console;   
    }

    public setConsole(Console console) {
        this.console = console;
    }

    public void turnOn() {
        if(console != null) {
            console.launchGame();
        }
    }
}

public class Test {
    public static void main(String[] args) {
        Me me = new Me(new XBox360());
        me.turnOn(); //"I see the ring of death!"
        me.setConsole(new PlayStation3());
        me.turnOn(); //"SONY is being hacked by a kid"
        me.setConsole(new Me(new Wii());
        me.turnOn(); //I think my Wii controller is in my neighbor's backyard")
    }
}

    

No comments:

Post a Comment