设计模式以封装UI控件之间的通用功能

时间:2010-06-07 15:13:12

标签: .net design-patterns

我正在围绕模式集思广益,以便用于以下场景。

我有一些第三方控件,我想添加常用功能。通过处理几个事件并在事件触发时执行某些操作以及添加一些私有变量以在事件之间保存某些状态信息来添加功能。我想重用代码和功能,所以这就是我通常要做的事情。

为此功能创建一个类,并传入我想在构造函数中添加功能的控件实例。

然后我可以在类的实例中向控件添加事件处理程序。

有人可以考虑使用其他模式来创建这种可重用的功能吗?

3 个答案:

答案 0 :(得分:1)

您可能需要查看:

  1. Facade Pattern
  2. Decorator pattern
  3. Observer pattern
  4. Facade模式允许您在当前类下封装控件的行为。装饰器模式将允许您能够创建可堆叠控件。观察者模式将允许您管理事件。

答案 1 :(得分:0)

我觉得Observer模式应该会有所帮助。这就是你如何使用它:

接受控件的

UtilityClass (正如您所提到的):将其设为观察者

将各种实用程序类(以及控件)注册到它感兴趣的各种事件可观察

现在,当特定事件发生时,它会更新各种观察者,您可以将基本的eventHandling委托给它正在包装的控件,还可以根据控件和事件进行自定义处理。

答案 2 :(得分:0)

最适用的“设计模式”是Observer。您想要开发的可重用功能可以作为Control的简单观察者来实现,它可以订阅Control事件的某些子集。幸运的是,Windows窗体控件实现了许多事件,通过常规的子类化,可以从内部添加功能,就像从内部添加一样。

例如,您可以通过实现订阅DragOver和DragDrop(以及可能的DragLeave)的观察者添加拖放支持,并根据DragDropEvent数据执行适当的操作。

这是一个值得考虑的优秀技术,因为它允许您开发一次这样的功能并将其添加到许多控件中。