我有几个类有一个名为 Tool 的基类。在表单中,我有一个工具参考,其中包含提到的类的实例之一。当窗体上发生 MouseDown 事件时,我调用当前的工具方法 ex。“CurrentTool.MethodWhenMouseDown()”。
大多数工具都有 3 种方法:
MethodWhenMouseDown()
MethodWhenMouseUp()
MethodWhenMouseMove()
但是一两个班级只有:
MethodWhenMouseDown()
现在哪个更好:
1.Tool 中的三个方法都有,不需要的类调用空方法。
2.实现接口ex。IMouseMoveListener 仅由在 MouseMove 事件发生时需要执行的类实现。这样,如果 MouseMove 事件发生,我们会问:
if(CurrentTool is MouseMoveListener)
{
(CurrentTool as IMouseMoveListener).MethodWhenMouseMove();
}
附加信息:
该程序就像 Paint 女士 - 工具是 Brush、Bucket(不需要 MethodWhenMouseMove 的工具)、LineTool 等。
在我的 PaintForm 中,我有一个抽象基类工具的引用,它存储派生类的实例之一。触发事件的是pictureBox。
您是否考虑过工具订阅的事件?– CodesInChaos
我认为在表单中有一个方法是很好的做法,它将在事件发生后调用,并且该方法正在调用 CurrentTool 的 siutable 方法。前任:
void MouseMoveSubscriber(object sender, MouseEventArgs e)
{
CurrentTool.MethodWhenMouseMove(e);
}
我假设每次更改 CurrentTool 时订阅和取消订阅 CurrentTool 的方法是不好的做法?
我还考虑过在表单中引用所有工具,并且每个工具都会订阅该事件,并且不需要取消订阅。我认为最大的缺点是每个工具都需要检查它是否是 CurrentTool。
你怎么想的?感谢您提供的帮助。