Do you know any patterns for GUI programming? (Not patterns on designing GUIs)我正在寻找与GUI的编码部分有关的模式。我不熟悉MVC的全局性,但是涉及单个控件和输入的模式,好主意和最佳实践。 让我说说我想做一个显示一些可能重叠的对象的控件。现在,如果我单击一个对象,则需要找出要执行的操作(只需找到可以以几种方式执行的对象,例如四叉树和Z轴顺序,那就不是问题了)。而且我可能会按住修改键,或者从一开始就激活了某个对象,从而使选择或其他操作变得更加复杂。我应该拥有一个代表屏幕对象的对象实例,单击时处理用户操作还是主类。等等。针对此类问题有什么样的模式或解决方案? Cay Horstmann撰写的 面向对象的设计和模式有一章,标题为"模式和GUI编程"。在该章中,霍斯特曼谈到了以下模式:
老实说,我认为最好是精通标准设计模式,并将其应用于开发UI时遇到的单个问题。 尽管存在常见的UI"主题"(例如处理修饰键),但实际的实现方式可能相差很大。 我有O'Reilly的Head First设计模式和The Poster,我发现它们非常宝贵! Shameless Plug:这些链接正在使用我的同事ID。 您正在寻找专业的应用程序编程。我搜索了很长时间的技巧和窍门,但没有成功。不幸的是,您将找不到有用的东西,这是一个复杂的主题,只有多年的经验,您才能了解如何有效地编写应用程序。例如,几乎每个程序都会打开一个文件,提取信息,以不同的形式显示它,允许进行处理,保存等,但是没有人确切说明什么是好的策略等等。此外,如果您正在编写一个大型应用程序,则需要查看一些策略来减少编译时间(否则,每次编译都将等待数小时)。例如,C语言中的Impls习语可以帮助您。然后还有更多。因此,软件开发人员的薪水很高,而且有很多工作:-) 我知道您说的并不像MVC那样具有全局性,但是MVC上有一些变化,特别是HMVC和PAC,我认为它们可以回答诸如您提出的问题。 除此之外,即使您不直接应用现有代码,也请尝试"本着精神"编写新代码。 也许您正在寻找类似'MouseTrap'之类的东西,我在codeproject上的一些文章(搜索UI平台)中看到过? 我还发现该系列非常有用http://codebetter.com/jeremymiller/2007/07/26/the-build-your-own-cab-series-table-of-contents/您可以在其中查看在嵌入式控制器等上。 Micha。 我不认为设计模式的好处来自试图找到适合问题的设计模式。但是,您可以使用一些启发式方法来帮助您清理设计,例如保持UI与系统中其他对象的分离尽可能远。 在这种情况下,有一种模式可能会有所帮助,即观察者模式。 |