c++抽象用户界面设计
C++ abstract user interface design
我正在为各种目标编写一个跨平台UI工具包,其中一些是嵌入式的。这些平台中的一些支持"保留"渲染模式,其中一些更"直接",所以我认为我的视觉效果有两个树-伪代码:
abstract class Visual
{
Visual( Widget widget ) { this.widget = widget; }
}
abstract class RetainedVisual : Visual
{
abstract void Setup( Renderer r );
abstract void Teardown( Renderer r );
}
abstract class ImmediateVisual : Visual
{
abstract void Paint( Renderer r );
}
到目前为止一切顺利。但现在我也有ContainerVisual
类编码小部件层次结构:
abstract class ContainerVisual : Visual
{
void AddChild( Visual child ) {}
}
这有点迫使我有一个ImmediateContainerVisual
和RetainedContainerVisual
类开始看起来臃肿。对更好的设计有什么想法?
最好的选择是将这三个类合并为同一个Visual class:
class Visual {
Visual(Widget w);
bool SupportsSetupTearDown();
bool SupportsPaint();
abstract void Setup(Renderer r);
abstract void TearDown(Renderer r);
abstract void Paint(Renderer r);
};
那么容器部件就不会有任何问题了。所有的视觉效果都应该实现这两种渲染方法,当目标发生变化时,系统将开始调用不同的函数。这也允许有条件地不以一种方式实现,并且可以构建从SetupTearDown转换为Paint和从Paint转换为SetupTearDown的特殊视觉效果。
在没有更多信息的情况下很难决定走哪条路:就功能而言,保留/立即有什么区别?容器是做什么的?
但是,在c++中,你可以考虑使用类模板来处理Container:
template <typename BaseType>
class ContainerVisual : public BaseType
{
public:
void AddChild(BaseType & /*or smart pointer or whatever*/ child ) {}
}
相关文章:
- Qt5 用户界面编译器:-i 选项不可用
- QMenuBar 不使用原生样式? c++ , QTDesigner.用户界面
- 界面设计:超载功能的安全性采用字符串和字符阵列
- 如何将C 中的后端写入与TCL/TCK用户界面连接
- 是否可以通过图形用户界面 (GUI) 与 Linux 命令行界面 (CLI) 进行交互
- 拥有用于QT应用程序的Web用户界面的最佳方法
- 面向海思处理器的用户界面SDK
- 如何在C++中使用我自己的库创建用户界面
- C 类的设计:其他类成员中类成员的共同用途;小界面与小课
- 使用 C++ 进行用户界面设计
- 为函数设计接口时,强制用户(客户端)提供内存区域 >= 所需大小。怎么做,是好是坏?
- QT 图形用户界面进度条
- 用户界面在 qt 应用程序中未更新
- 在界面设计中使用函数显示日期
- 对 C++11 随机分布的界面设计感到困惑
- VS2012 - 类界面设计:私有成员函数定位/隐藏
- 界面设计器:找不到信号处理程序
- c++抽象用户界面设计
- 用户界面-GUI和文本模式C++设计,以消除冗余(可选参数?功能过载?)
- 用户界面 - 从控制台和 GUI 应用的输入设计中读取值 (C++)