作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于我正在努力解决的问题的问题。希望你能忍受我。
想象一下,我有一个 Object 类,表示物理对象层次结构的基类。后来我从它继承来创建一个Object1D、Object2D和Object3D类。这些派生类中的每一个都有一些特定的方法和属性。例如,3d 对象可能具有下载供渲染器使用的 3d 模型的功能。
所以我会有这样的事情:
class Object {};
class Object1D : public Object { Point mPos; };
class Object2D : public Object { ... };
class Object3D : public Object { Model mModel; };
class Renderer {}; // Default one
class Renderer3D : public Renderer {};
CRenderer(Object& object);
CRenderer3D(Object3D& object);
最佳答案
处理这种耦合的一种方法是使用工厂。通用工厂创建对象和渲染器。 2D 工厂创建 2D 对象和兼容的 2D 渲染器,3D 工厂创建 3D 对象和兼容的 3D 渲染器。
abstract class Factory {
abstract Object createObject();
abstract Renderer createRenderer();
}
class 2DFactory {
Object createObject() { return new 2DObject(); }
Renderer createRenderer() { return new 2DRenderer(); }
}
// similarly for 3D
class Client {
Client(Factory factory) { ... }
void render() {
factory.createRenderer().render(factory.createObject());
}
}
template<class T> class Renderer {
void render(T object) { ... }
};
template<> class Renderer<Object3D> {
void render(Object3D object) {
// render the 3D way
}
};
// similarly for 2D
关于design-patterns - 关于设计的问题(继承、多态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610843/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!