Tuesday, August 6, 2013

State Design Pattern

State Design Pattern: The State Design Pattern is a type of behavioral design pattern. The state design pattern is for an object to change its behavior depending on its state.

Here's an example of state design pattern.

ImportType.java

interface ImportType {

public void excecuteImportProcess(ImportController importController);
}

CustomerTypeImport.java


public class CustomerTypeImport implements ImportType {
public void excecuteImportProcess(ImportController importController) {
System.out.println("Customer");
}
}

PeopleTypeImport.java

public class PeopleTypeImport implements ImportType {
public void excecuteImportProcess(ImportController importController) {
System.out.println("People");
}
}

ImportController.java

 public class ImportController {

private ImportType importType;

public ImportController(ImportType importType) {
this.importType = importType;
}

public void setImportType(ImportType importType) {
this.importType = importType;
}

public void handleImportProcess() {
importType.excecuteImportProcess(this);
}
}

ImportDemo.java


public class ImportDemo {

public static void main(String[] args) {

ImportController importController = new ImportController(new CustomerTypeImport());
importController.handleImportProcess();

ImportController importControllerNew = new ImportController(new PeopleTypeImport());
importControllerNew.handleImportProcess();
}
}

The ImportDemo class presents the state design pattern. First of all we have created an object of ImportController with a CustomerTypeImport object then called handleImportProcess() method on this ImportController object. Again, we have created an object of ImportController with a PeopleTypeImport object then called handleImportProcess() method on this ImportController object.

When you will see the out put of above demo then you can see the ImportController object's behavior is different. Behavior of an ImportController object depends upon the state of ImportType.

The console output of executing ImportDemo is shown here.

Customer
People

No comments:

Post a Comment