Pages

Showing posts with label command pattern java design patterns. Show all posts
Showing posts with label command pattern java design patterns. Show all posts

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..