跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C++ 桥接模式
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== 案例:跨平台图形渲染 === 假设我们需要开发一个跨平台的图形渲染库,支持不同平台(Windows、Linux)和不同渲染API(OpenGL、Vulkan)。使用桥接模式可以避免为每个平台和API组合创建子类: <syntaxhighlight lang="cpp"> // 实现类接口:渲染API class RenderAPI { public: virtual ~RenderAPI() = default; virtual void render() = 0; }; // 具体实现类:OpenGL class OpenGL : public RenderAPI { public: void render() override { std::cout << "Rendering with OpenGL." << std::endl; } }; // 具体实现类:Vulkan class Vulkan : public RenderAPI { public: void render() override { std::cout << "Rendering with Vulkan." << std::endl; } }; // 抽象类:图形 class Graphic { protected: RenderAPI* renderer; public: Graphic(RenderAPI* renderer) : renderer(renderer) {} virtual ~Graphic() = default; virtual void draw() = 0; }; // 扩展抽象类:圆形 class CircleGraphic : public Graphic { public: CircleGraphic(RenderAPI* renderer) : Graphic(renderer) {} void draw() override { std::cout << "Drawing a circle: "; renderer->render(); } }; int main() { RenderAPI* opengl = new OpenGL(); RenderAPI* vulkan = new Vulkan(); Graphic* circle1 = new CircleGraphic(opengl); Graphic* circle2 = new CircleGraphic(vulkan); circle1->draw(); // 输出: Drawing a circle: Rendering with OpenGL. circle2->draw(); // 输出: Drawing a circle: Rendering with Vulkan. delete opengl; delete vulkan; delete circle1; delete circle2; return 0; } </syntaxhighlight>
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)