Pages

Thursday, September 20, 2012

Command Pattern (Design Pattern)

Here is sample code to understand command pattern

Hierarchy is as follows:
Equipments: Laptop, Mobile Phone, TabletPC
Action: TurnOn, TurnOff

Equipment.java

package com.manan.testlab;
public interface Equipment {
public boolean turnOn();
public boolean turnOff();
}

Laptop.java

package com.manan.testlab;
public class Laptop implements Equipment {

@Override
public boolean turnOn() {
System.out.println("Turn On Laptop..");
return true;
}

@Override
public boolean turnOff() {
System.out.println("Turn Off Laptop..");
return true;
}

}

MobilePhone.java

package com.manan.testlab;
public class MobilePhone implements Equipment {

@Override
public boolean turnOn() {
System.out.println("Turn On Mobile..");
return true;
}

@Override
public boolean turnOff() {
System.out.println("Turn Off Mobile..");
return true;
}
}

TabletPC.java

package com.manan.testlab;
public class TabletPC implements Equipment {

@Override
public boolean turnOn() {
System.out.println("Turn On TabletPC..");
return true;
}

@Override
public boolean turnOff() {
System.out.println("Turn Off TabletPC..");
return true;
}
}

Command.java

package com.manan.testlab;
public interface Command {
public void execute();
public void setEquipment(Equipment pEquip); //optional
}

SwitchOn.java

package com.manan.testlab;
public class SwitchOn implements Command {

Equipment e;

public SwitchOn(){
}

public SwitchOn(Equipment pEquip){
this.e = pEquip;
}

public void setEquipment(Equipment pEquip){
this.e = pEquip;
}

@Override
public void execute() {
e.turnOn();
}

}

SwitchOff.java
package com.manan.testlab;
public class SwitchOff implements Command {
Equipment e;
public SwitchOff(){
}
public SwitchOff(Equipment pEquip){
this.e = pEquip;
}
public void setEquipment(Equipment pEquip){
this.e = pEquip;
}
@Override
public void execute() {
e.turnOff();
}
}

CommandTest.java
package com.manan.testlab;
public class CommandTest {
public static void main(String args[]){
Equipment laptop = new Laptop();
Equipment mob = new MobilePhone(); 
Equipment tab = new TabletPC();
Command on = new SwitchOn();
on.setEquipment(laptop);
on.execute();
on.setEquipment(mob);
on.execute();
on.setEquipment(tab);
on.execute();
Command off = new SwitchOff();
off.setEquipment(laptop);
off.execute();
off.setEquipment(mob);
off.execute();
off.setEquipment(tab);
off.execute();
}
}
Output:
Turn On Laptop..
Turn On Mobile..
Turn On TabletPC..
Turn Off Laptop..
Turn Off Mobile..
Turn Off TabletPC..

No comments:

Post a Comment