ruby组合模式的实际应用
作者:佚名 时间:2012-06-10
如果你在ruby的代码库中寻找使用组合模式的具体例子,那很快就会在图形用户界面(gui)库中寻找到它的踪影.所有先进的gui都支持一些基本的构件,比如文字标签,输入框和菜单等.
这些基本的gui构件相互之间有很多共同处,无论是按钮,文字标签或是菜单项目它们都包含一个字体,一种背景色和一种前景色,并且它们都占用一定的屏幕区域,当然,所有先进的gui绝非一组简单的基本gui构件的集合.实际上,gui是构建在一个继承层次之上的,从一个文字标签或者文本框开始,将它们放在特定的位置,然后将它们和视觉元素绑定在一起提示用户输入他的名字,再把这个名字输入框和一个相信的姓氏输入框及一个社会保险号输入框合在一起,这些元素还将合并在一系列更大,更复杂的gui构件中,如果你认真阅读子本章,那你一定会觉得这个过程非常熟悉,我们则好创建子一个gui组合.
一个在gui工具盒中使用组合模式的,很好的例子可以在fxruby中找到.fxruby是一个ruby扩展,它将fox(一个开源的跨平台gui工具盒)带入子ruby世界.fxbuby为你提供子一组分门别类的用户界面组件,从最基本的fxbution和fxlabel到进学精致的fxcolorselector和fxtable.你还可以创建踪迹的组件,甚至是使用fxhorizontalframe和它衍生的fxverticalframe所构成的任意复杂的组件,这两个框架类充当窗口的角色,允许你向其中添加子组件来单一的gui元素.这两个框架类的不同之处在于它们如何显示其中的子组件,一个是将子组件水平地排放,而别一个则垂直地显示它们.无论垂直还是水平,这两个fox的框架类都是fxwindow类的子类,其他的组件也是如此.