在我的项目中,我想对不同类型的对象使用对象池 - 行为相似但池大小不同。
我应该为池和接口创建泛型类以应用于创建的对象,还是应该创建具有公共逻辑的抽象池类,然后为我想要使用它的所有不同类创建特定的子类? / p>
答案 0 :(得分:2)
你可以拥有两件事,即创建一个抽象的泛型类。我更喜欢通用类实现的通用接口,并为工厂方法/类后面的特定类型实例化。抽象类将强制创建派生类,使其更加繁琐。我想到的示例用法类似于
IPool<MyClass> = PoolFactory.Get<MyClass>(5); // 5 being pool size
IPool<IFoo> = PoolFactory.Get<FooImpl>(5);
IPool<IBar> = PoolFactory.Get(5, () => new BarImpl("some argument")); // instance creation with factory method
请注意,通过继承泛型类,它仍然可以为我提供专业化的范围 - 典型的需求是复杂的实例创建(当然可以通过为工厂接口或工厂委托提供池实现来建模)
答案 1 :(得分:0)
这是通用类型的典型方案。所以我提倡通用池。
泛型只在其他类使用对它的引用而不知道具体类型的情况下才会产生问题。在这种情况下,您可以创建由通用池类实现的非泛型接口。
答案 2 :(得分:0)