在OOP如C#和Java中如果我要创建一个类来进行所有字符串操作,我知道最好使所有函数都是静态的。但是当我需要多次调用这些函数时,哪一个是更好的选择(在使用更少资源的情况下):
仅创建一次对象并使用该对象调用该函数。
absolutelayout
或
每次直接致电课程
StringManipulation sm = new StringManipulation();
sm.reverse("something");
sm.addPadding("something");
sm.addPeriod("something");
答案 0 :(得分:1)
我相信这会很有效率
StringManipulation sm = new StringManipulation();
sm.reverse("something").addPadding("something").addPeriod("something");
创建一个能让它工作的实例。
答案 1 :(得分:1)
如果需要进行初始化,则应创建一个对象,例如从数据源获取值或参数。
静态是你的例子中的方式,因为它们是原子函数,无论上下文如何都会返回相同的结果(无状态)
然而,在C#中(我不知道在java中),有一种更好的方法:扩展方法。基本上,你将向字符串对象添加方法,允许直接在字符串对象上调用它们,如果你的返回对象也是一个字符串,如果你需要链接它们:
public static string reverse(this string str)
{
// Code to reverse your string
return result;
}
.........
"something".reverse().addPadding()
了解更多信息:https://msdn.microsoft.com/en-us/library/bb383977.aspx
答案 2 :(得分:1)
给出两个选项的性能差异可以忽略不计。但主要的区别在于方法的使用。
如果您需要一个方法来执行与类对象无关的任何常规任务,那么您将在设计中考虑静态方法。对于依赖于对象的任务,您应该考虑实例方法。