Maybe hiding initialize in your abstract parent class is too much abstraction?
Or the wrong one. It just seems like over-inheriting is definitely one of the bigger maintainability nightmares I have had; and pulling the constructor entirely into the parent…. Well it better be exactly the parent, and cleanly done.
It’s like those overly abstracted resource_controllers. They seem like a great idea, but once you start deviating at all, you spend more code and more time thinking about how to write that code to get out of the straight-jacket over over-inheritance than you would have had in the first place.
I’m starting to feel that while abstract constructors *can* be done right they are often are a smell. Compare these three approaches and let me know what you think: