Initializers should be able to access PDP object
it might be helpful if they had access to the PDP object which they were initializing. I could imagine a developer subclassing SimplePDP and SimplePDPFactory to add additional functionality and wanting to tweak that functionality with the initializers.
Default Initializers should directly be accessible
A possibility should be provided so that a single default initializer can be exchanged or accessed (in it must be reconfigured).
Then an addAdditionalInitializers-method should also be provided for custom initializers.
Here I think there should be two interfaces
A Initializer interface (the current one) that has only the run() method and an other interface, extending the current interface where e.g. the run method looks like run(PDP pdp). The factory then would be responsible for passing the right PDP object to the factory.
Hmm maybe that won't work because in the extended class the run() method would still be available.
I think it must be two different interfaces.