我有以下设计问题。例如,我有 3 个视觉工作室项目。它们被称为“TheGame”、“OpenGLDevice”和“DirectXDevice”。“OpenGLDevice”和“DirectXDevice”也是项目内的一个类的名称。您可能已经猜到,TheGame 处理应用程序的逻辑并使用其他两个项目之一在屏幕上绘制内容。我的问题是关于 TheGame 应该如何与这两个项目互动。这是我能想到的。
在 TheGame 中创建一个“DeviceContainer”基类,以及一个“OpenGLDeviceContainer”和“DirectXDeviceContainer”派生的私有内部类。每个派生类都包含一个 OpenGLDevice 或 DirectXDevice 类型的私有成员字段。DeviceContainer 基本上可以用作包装器。
在第四个项目中创建一个“IGraphicsDevice”接口,并让所有三个项目都引用它。使 OpenGLDevice 和 DirectXDevice 都实现该接口。
我喜欢方法 1,因为我不需要创建第四个项目,而且 OpenGLDevice 和 DirectXDevice 都没有依赖关系。
首先,这两种方法中的哪一种是最好的方法,是否有第三种更好的解决方案。
其次,如果我确实选择使用接口方法,有没有比在第四个项目中声明接口更好的方法?