Correct use of delegate pattern
I think your initial analysis into classes and interfaces is not quite right. I go by the mantra "if you can kick it, then it should be a class instance" (apologies to the purists out there). You can definitely kick a door, so there should be a class Door which will have methods for open(), close() and lock(), plus listeners for onOpen(), onClose() and onAlarm(). A constructor like Door(int id) sounds about right, allowing you to give the door a primary key.

The manager class should maintain a list of doors, and do the work required to:


route incoming commands from the socket interface to the appropriate door instance
send outgoing events from doors to the socket interface. 


The Door class should not know that the socket implementation exists. Your DoorConnectionIF interface is likely superfluous.

But it is good to see someone understanding why God invented listeners. Many experienced programmers misunderstand what listeners are designed for, and end up with tangled circular references between classes.