在基类中创建派生类我的问题与Need a design pattern to remove enums and switch statement in object creation的问题差不多一样但是我没有看到抽象工厂模式在这里很合适。根据参数
我目前正在计划重构/重新实现一些现有的DAL/ORM混合库。某处在现有的代码有代码看起来像这样:
class Base
{
static Base * create(struct Databasevalues dbValues)
{
switch(dbValues.ObjectType)
{
case typeA:
return new DerivedA(dbValues);
break;
case typeB:
return new DerivedB(dbValues);
break;
}
}
}
class DerivedA : public Base
{
// ...
}
class DerivedB : public Base
{
// ...
}
所以负责数据库的通信库填充一个结构与数据库有关的实体的所有信息,然后在上面创建()方法被调用,以实际创建ORM中的相应对象。 但我不喜欢基类知道所有派生类的想法,我也不喜欢switch语句。我也想避免创建另一个类来创建这些对象。你对目前的方法有什么看法?你将如何实现这个功能?
上面提出的什么解决方案打破了LSP,以及如何? –
对不起,你是对的,我错过了静态关键字。编辑我的答案。 – SomeWittyUsername