2011-04-28 26 views
0

为鱼商提供软件。 为了销售某种鱼,用户界面显示了鱼的图片。用户可以点击它,然后弹出一个窗口,他可以选择一个不同的鱼。UI中的依赖和回调

在一个天真的实现,组件需要

  • 访问FishImageLibrary,检索图像
  • 访问FishSelectionPopup,要求用户输入一个新的鱼类

解决方案1:一起传递两个类。 问题是我们的组件可能在另一个组件内。所以这两个类必须传递给我们的组件,从而在各处创建依赖关系。

解决方案2:回调。 使用回调的实现不会很干净,要么是因为组件可能位于另一个组件中,而且该事件必须在整个层次结构中传播。这需要对几个类进行更改。

对于一个真正干净的解决方案的任何建议?

回答

1

因此,这将是一种显示任何鱼被选中的图片框,并在点击时打开选择弹出窗口。

我想那个盒子是一个更大的结构的一部分,其工作是呈现选定的鱼。也许有一个鱼的名字的标签,另一个呈现的大小..我有他们的父母组件设置他们的价值观时,选择一条鱼。它会知道FishImageLibrary并能够检索基于鱼的图像地址。

对于弹出式窗口,我认为命令模式对于这类问题非常标准。它可以让你传递一个标准化的对象到你的图片框中,而不必知道OpenSelectionPopup的实现细节,它本身知道FishSelectionPopup以及如何打开它。

+0

由父组件分配图像:好主意。但是,当我们想要在第二个地方使用这个图片盒时不太好。命令模式打开Popup:是的,我会这样做。 – LTR 2011-04-28 15:22:52

+0

“父组件”解决方案描述非常松散。这取决于你的应用程序如何工作和所有。但基本上你可以拥有尽可能多的图片盒,只要他们有一些超级组件可以设置他们的pictureAddress。他们可以实现与其他组件共享的更通用的setter方法,或者如果要将它们配置为像图片方向之类的东西,而这些方法无法自行解决,那么它们可以保持特定的方式。 – Jad 2011-04-28 15:43:41