In my project, I want to use object pool for different types of objects — with similar behavior, but different pool sizes.
Should I create generic class for a pool and interface to apply to created objects, or should I create abstract pool class with common logic and then create specific sub-classes for all the different classes that I want to use it with?