我们知道GUI编程的任何模式吗? (不是设计GUI的模式)
我正在寻找与GUI的编码部分有关的模式。我不熟悉MVC的全局性,但是涉及单个控件和输入的模式,好主意和最佳实践。
假设我要制作一个控件,以显示一些可能重叠的对象。现在,如果我单击一个对象,则需要找出要执行的操作(只需找到可以以几种方式执行的对象,例如四叉树和Z轴顺序,那不是问题)。而且我可能按住修改键,或者从一开始就激活了某个对象,从而使选择或者其他操作变得更加复杂。我应该拥有一个代表屏幕对象的对象实例,单击时处理用户操作还是主类。等等。针对此类问题有什么样的模式或者解决方案?
解决方案
回答
我认为,老实说,最好精通标准设计模式,并将其应用于开发UI时遇到的单个问题。
尽管存在常见的UI"主题"(例如处理修饰键),但实际的实现方式可能相差很大。
我有O'Reilly的Head First设计模式和The Poster,我发现它们非常宝贵!
Shameless Plug:这些链接正在使用我的同事ID。
回答
我认为设计模式的好处不是来自尝试找到适合问题的设计模式。但是,我们可以使用一些启发式方法来清理设计,例如保持UI与系统中其他对象的尽可能分离。
在这种情况下,有一种模式可能会有所帮助,即观察者模式。
回答
也许我们正在寻找类似'mouseTrap'之类的东西,我在codeproject上的一些文章中看到过(搜索UI Platform)?
我还发现该系列非常有用http://codebetter.com/jeremymiller/2007/07/26/the-build-your-own-cab-series-table-of-contents/,我们可以在其中查看嵌入式控制器等等。
姐姐
回答
我知道我们说的并不像MVC那样具有全局性,但是在MVC上有一些变化,特别是HMVC和PAC,我认为它们可以回答诸如我们提出的问题。
除此之外,即使我们不直接应用现有代码,也请尝试按照其本来的精神编写新代码。
回答
Cay Horstmann的面向对象设计和模式有一章名为"模式和GUI编程"。在该章中,霍斯特曼谈到了以下模式:
- 观察员布局管理器和
- 策略模式组成部分
- 容器和复合模式
- 滚动条和装饰图案