具有有限基类的对象工厂

时间:2017-01-09 10:15:44

标签: c++ objectfactory

昨晚我在设计一家物品工厂时陷入了困境,并且我想在这里寻求一些指导。

基本上,我的&#39; CameraFactory&#39;根据可用类型返回指向类的指针,例如&#39; FIXED&#39;或者&#39;免费&#39; (还有更多,但我会保持这个例子简短)。所有这些都继承自CameraBase。 但是,我的问题是因为CameraBase类的实现非常有限,所以用户需要对返回的指针执行static_cast<typeOfCameraRequested*>(returned CameraBaseDerivative*);

我觉得通过强迫用户记住&#39;静态转换结果是不好的做法(我在实际实现中没有使用原始指针btw)。但根据我的理解,唯一的另一种方法是创造一个整洁的&#39;工厂实现将包括CameraBase中派生类的所有成员/方法的接口,以便可以轻松调用派生类。

请问有人可以解释这个问题的最佳方法吗?我应该重新设计课程吗?如果是这样,它应该是什么样的?泛型?

谢谢!

要考虑的代码:

Class CameraBase {

protected:

 SomeDataMember mDataMember;
}

Class FreeCamera : public CameraBase {

public:

  void SomeFreeCameraSpecificMethod();
}

class StaticCamera: public CameraBase {

public:

  void SomeStaticCameraSpecificMethod();
}

Class CameraFactory {

public:

  static BaseCamera* createCamera(CameraTypeEnum _type) {

    switch (_type) {

      case FREE:
        return createFreeCamera();
        break;

      case STATIC:
        return createStaticCamera();
        break;
    }
  }
}

FreeCamera* freeCam = static_cast<FreeCamera*>(CameraFactory::createCamera(FREE));

0 个答案:

没有答案