从我的理解中,部分课程有点被专业开发人员所诟病,但我已经过了一些问题;部分课程或“链式继承”
我已经制作了一个RichTextBox控件的实现,该控件使用user32.dll调用来更快地编辑大型文本。这导致了很多代码。然后我向控件添加了拼写检查功能,这是在另一个继承RichTextBox控件的类中完成的。这也构成了一些代码。
这两个功能是非常独立的,但我希望它们合并,以便我可以在我的窗体上放置一个控件,该窗体既具有快速编辑功能,又具有内置的拼写检查功能。我觉得简单地将代码添加到一个类中到另一个会导致一个太大的代码文件,特别是因为有两个非常独特的功能区域,所以我似乎需要另一种方法。
现在我的问题;为了合并这两个类,我应该让拼写检查RichTextBox从快速编辑继承,继而继承RichTextBox?或者,我应该让这两个班的部分班级成为一个班级,从而让他们更“平等”这么说?
这是更多的OO原则和运动的问题,比我试图重新发明轮子,我知道有很多很好的文本编辑控件。但这只是我的一个爱好,我只想知道这种解决方案是如何由专业人员管理的。
谢谢!
我对接口的使用(和理解)非常有限,但是这种方法基本上不会强制我重复SpellCheckingTextBox中的FastEditTextBox代码,反之亦然? – 2010-04-30 08:41:13
我想你会考虑到常见的调用,并在拼写检查器类和快速编辑类上实现IExtensibleRichTextBox。正如Gabriel所说,这将允许你实现装饰者模式。您可以根据需要定义快速,拼写检查或快速拼写检查。有关装饰者模式的完美概述,请参阅O'reilly书籍中的免费章节,首先设计模式:http://oreilly.com/catalog/hfdesignpat/chapter/ch03.pdf – 2010-04-30 11:19:50