- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正处于开发具有图形用户界面的 C++ 多平台(移动)应用程序的早期阶段。我试图找到一种抽象实际 UI/窗口实现的好方法。到目前为止,这基本上是我尝试过的:
我创建了一个界面层次结构
Screen
+Canvas
+Form
+Dialog
Control
+EditBox
+CheckBox
+...
我还有一个类,Application,它基本上使用所有这些接口(interface)来实现 UI 逻辑。 Application 类还提供用于创建 UI 类实例的抽象工厂方法。
这些接口(interface)都有实现。例如,对于 Windows Mobile,Win32Form 实现了 Form,Win32Canvas 实现了 Canvas,Win32Dialog 实现了 Dialog。如您所见,问题在于实现失去了层次结构,即 Win32Dialog 没有扩展 Win32Form。
这成为一个问题,例如,方法 Form::addControl(Control &ctrl)。在应用程序的 Windows Mobile 版本中,我知道 ctrl 参数是 Win32... 控件实现之一。但是由于丢失了层次结构,因此无法知道它是 Win32EditBox 还是 Win32CheckBox,我确实需要知道这些以便在控件上执行任何特定于平台的操作。
我正在寻找的是一些关于如何解决这个问题的设计模式。请注意,不需要保留此接口(interface)层次结构解决方案,这只是我目前的做法。我将采用任何方法来解决让 UI 逻辑与几个不同的 UI 实现分离的问题。
请不要告诉我使用这个或那个 UI 库;我喜欢从头开始编写代码,我参与其中是为了获得学习经验……;-)
最佳答案
我的一些灵感:
不要从 Screen 继承 Form。这不是"is"一种关系。
Screen
Canvas
GUIObject
Form
Dialog
Control
Button
EditBox
CheckBox
...
Panel
更详细的描述:
屏幕
Canvas
图形用户界面对象
表格
对话框
希望控件是不言自明的(面板是内部带有可选滚动条的控件的区域)。
这应该有效。然而,如何在不破坏此界面的通用性和/或易用性的情况下利用每个平台的特定功能是困难的部分。我通常尝试将所有绘图与这些基本类分开,并有一些特定于平台的“Painter”可以获取每个基本对象并以特定于平台的方式绘制它。另一种解决方案是每个平台的并行层次结构(我倾向于避免这种情况,但有时需要 - 例如,如果您需要包装窗口句柄)或“功能位”方法。
关于c++ - 接口(interface)层次设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1747416/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!