假设您想要将lengthOfFirstLine方法添加到预定义的File类。修改现有类还是使用新方法创建一个扩展File类的新类是更好的做法?更好地将方法添加到预定义的类或创建子类?
编辑 - 具体而言,情况是一个班级缺乏一种特别的方法。我不想完全改变班级,而是用这种方法来增加班级。
假设您想要将lengthOfFirstLine方法添加到预定义的File类。修改现有类还是使用新方法创建一个扩展File类的新类是更好的做法?更好地将方法添加到预定义的类或创建子类?
编辑 - 具体而言,情况是一个班级缺乏一种特别的方法。我不想完全改变班级,而是用这种方法来增加班级。
这取决于该方法是否适用于类文件的所有元素。例如,lengthOfFirstLine不适用于二进制文件,因此它可能不属于一般的File类,但如果你的类只代表文本文件,那么它应该去那里。
对于.NET语言,还可以选择使用extension methods。这样,您不必通过向其中添加助手/实用程序方法来“弄脏”类,也不需要继承 - 只需向代码中添加using
语句即可为类添加功能。
同意路易斯和莱斯特。如果你使用.Net,扩展方法是这种功能的一种方式。但是,如果您可以打开各种文件(如二进制文件),则应该不要将LengthOfFirstLine添加到基类中。你可以将它分类到一个FileClass并将该方法添加到该文件中。
请记住,.Net中的扩展方法无论如何都是语法糖。你可以用你自己的语言使用Static类和方法来模拟它。这就是.Net无论如何都要做的事情。
例如有一个静态的FileHelpers类,它有各种静态帮助器方法。每个这些静态方法的第一个参数是File类。所以你可以使用FileHelpers.GetLengthOfFirstLine(myOpenedFile)