Давайте предположим следующий фрагмент кода:
public class NotThatWellWrittenClass {
public static void doSmth() {
/*
This code part is actually irrelevant.
*/
}
}
Некоторые другие классы будут использовать этот параметр следующим образом: NotThatWellWrittenClass.do()
, поэтому единственные накладные расходы на самом деле связаны с выполнением вызова метода ,
Мне действительно не нравится программировать таким образом, поэтому я хотел бы реорганизовать эту часть кода, не нарушая при этом клиентов, использующих статический вызов метода.Рефакторированный фрагмент:
public class NotThatWellWrittenClass {
public static void doSmth() {
new WorkUtil().doSmth();
}
}
public class WorkUtil() {
public void doSmth() {
/*
This code part is actually irrelevant.
*/
}
}
Теперь код стал намного более объектно-ориентированным и его проще тестировать и использовать повторно.Однако теперь он создает дополнительный объект (назначение памяти) и выполняет вызов метода экземпляра вместо статического вызова (который, я полагаю, оптимизируется JVM по-разному).
Итак, вернемся к вопросу:Рефакторинг обеспечивает какие-либо заметные накладные расходы?Может быть, это должно быть выполнено другим способом?(Я всегда мог кэшировать экземпляр моего объекта, но стоит ли это того?)
Я хотел бы получить более подробное объяснение, спасибо.