vendredi 1 juillet 2016

lookup map values and calling matched implementations

I have the following design of my classes:

public interface Device {
    void create();
}

public class Printer implements Device {
    @Override
    public void create() {
}

public class Mouse implements Device {
    @Override
    public void create() {
}



public class ProcessImpl implements Processor {

   private final Map<String, Set<String>> deviceMap = new HashMap<>();

   @Override
   public void process(String input) {
       populateMap(input);

       //call to `provision(deviceMap)`

}

deviceMap values are arranged like this for example: {123=[P, M], 224=[C, P, M]}

where 123 is an ID and String values C',P,M` represents devices to be created against the corresponding ID.

My question is, how can I iterate over this map in provision(deviceMap) method and create the devices by calling their corresponding create() method. (achieving polymorphism) e.g.

When P -> Call create() in Printer implementation of Device. What is good design/pattern I can use to structure the classes? Can enum help with this or is there a better cleaner approach ?

Aucun commentaire:

Enregistrer un commentaire