![]() |
1
34
我正在使用它们:
|
![]() |
2
14
blog entry 现在我确信它们确实有用。 例如,如果您希望现有实例类具有额外的功能,并且由于某种原因无法更改现有源。您可以创建类帮助器来添加此功能。 例子:
例子:
笔记:
|
![]() |
3
6
这听起来很像C#3(和VB9)中的扩展方法。我所看到的对它们的最佳使用是对
(当然,还是随便什么)。所有这些都是可行的,因为扩展方法允许您有效地将对静态方法的调用链接在一起,这些静态方法在返回时采用相同的类型。 |
![]() |
4
4
它们对于插件非常有用。例如,假设您的项目定义了特定的数据结构,并以特定的方式保存到光盘中。但是其他一些程序做了一些非常相似的事情,但是数据文件不同。但是你不想用一堆导入代码来膨胀你的EXE,因为你的很多用户都不需要使用这个功能。您可以使用插件框架并将导入程序放入一个插件中,该插件的工作方式如下:
然后定义转换器。一个警告:一个类 这不是一门课 朋友 . 只有在可以通过其公共方法和属性完全设置新的TMyClass对象的情况下,这种技术才会起作用。但如果可以,它的效果非常好。 |
![]() |
5
3
我记得第一次体验你所谓的“类助手”是在学习Objective C时。Cocoa(苹果的Objective C框架)使用了所谓的“类别” 类别允许您通过添加自己的方法来扩展现有类,而无需子类化。事实上,Cocoa鼓励您尽可能避免子类化。子类化通常是有意义的,但通常可以避免使用类别。 Cocoa中使用类别的一个很好的例子是所谓的“键值代码(KVC)”和“键值观察(KVO)”
NSArray类既没有此方法的声明,也没有此方法的实现。但是,通过使用类别。您可以在任何NSArray类上调用该方法。您不需要子类NSArray来获得KVC/KVO一致性。
使用此技术可以很容易地将KVC/KVO支持添加到您自己的类中。Java接口允许您添加方法声明,但类别也允许您将实际实现添加到现有类中。 |
![]() |
6
3
正如GameCat所示,Tstring是避免某些键入的一个很好的选择:
您是否需要访问注册表中的多行字符串?
|
![]() |
7
2
我不建议使用它们,因为我阅读了以下评论:
http://davidglassborow.blogspot.com/2006/05/class-helpers-good-or-bad.html |
![]() |
8
0
我见过它们用于使可用的类方法在类之间保持一致:将打开/关闭和显示/隐藏添加到给定“类型”的所有类,而不仅仅是活动的和可见的属性。 |
![]() |
Eris · 纯虚拟成员有什么优势吗(除了他们可能防止的人为错误)? 2 年前 |
![]() |
AJA SMBAT · 我在获取列表而不是绑定方法时遇到问题 2 年前 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
Rocket Procd · 获取活动类实例的数量 2 年前 |
![]() |
cred · 为什么我请求的变量在从另一个类调用时显示为0.0? 2 年前 |
![]() |
Oliver Guy · 一个类的所有实例共享相同的值 2 年前 |