jeudi 23 avril 2015

Alternative for instanceOf (State Pattern)

I'm having a problem using the state pattern, I don't know how to check if a State is of a certain instance without using instanceOf (because that is considered a bad practice).

TCPConnection holds a TCPState object. Let's say I want to get all the TCPConnections that have the state TCPEstablished. How would I do this? enter image description here

A way would be:

public List<TCPConnection> getAllEstablished() {
  List<TCPConnection> list = new ArrayList<TCPConnection>();

  for(TCPConnection tcp : allConnections) {
      if(tcp.getState().instanceOf(TCPEstablished)) {
          list.add(tcp);
      }
  }

  return list;
}

But this uses instanceOf and I would prefer not to use that. Are there any better ways? Or is my use of instanceOf valid?

Aucun commentaire:

Enregistrer un commentaire