我正在设计一个图形应用程序,我决定编写自己的菜单。我希望这个菜单与平台无关。目前,我的菜单主要包含许多按钮。我的问题涉及单击按钮时处理事件。我的困境是一个按钮“知道”它存在的背景。在我看来,如果有一些更大的代码创建按钮和处理鼠标事件,可能会出现某种类型的switch语句的需要。 switch语句必须根据单击的唯一定义按钮调用相应的操作。
我想避免这个switch语句。我的第一个想法是让每个按钮都保持一个函数指针,用于在单击时盲目地启动正确的操作。这将消除任何特定于按钮的代码。然而,它让我觉得按钮应该包含任何特定于上下文的信息(例如函数指针)。我相当缺乏经验,我想知道这是否被认为是糟糕的设计。无论如何,我如何以不需要某种类型的开关语句的方式设计我的菜单并被认为是良好的OOP设计?我想听听您的首选解决方案。
提前致谢!
答案 0 :(得分:6)
你看看图书馆:
SPTK(Simply Powerful Toolkit)是一个跨平台的工具包,它提供了一组C ++类,用于快速简便的应用程序开发。它提供了使用FLTK的GUI组件,并具有与GUI组件无缝连接的数据库支持。
EGUI
http://www.codeplex.com/egui
http://torjo.com/egui/
http://msdn.microsoft.com/en-us/magazine/cc534994.aspx
NovaTK是一个面向对象的跨平台GUI工具包。 NovaTK的重点之一是促进需要更少代码行的跨平台应用程序的快速开发。事件系统基于强大的回调机制,使应用程序设计更简单,更易于阅读和逻辑。
Ecere Cross Platform GUI Applications 一次开发应用程序,将它们与轻量级运行时环境一起部署在所有平台上。
简介ClassLib,一个C ++类库
答案 1 :(得分:2)
你可以看看 Command Pattern
您可以将命令与菜单项关联,该命令将包含要执行的代码。