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

Dan*_*Dan 5 .net design-patterns

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

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

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

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

任何人都可以考虑使用替代模式来创建这种可重用的功能吗?

bbu*_*dge 0

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

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

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