На этом уроке мы создадим интерфейс Strategy(), в котором будет всего один метод join(). Так же реализуем классы стратегий StrategyString и StrategyBuffer().
Научился: StringBuffer работает с объектами оптом, стринговый += конкатенирует объекты в розницу
Когда объектов мало - разница незаметна, при больших массивах данных буферизиованная обработка предпочтительнее
Научился: Зависит от (в интернете)
1.Выбор метода зависит от количества строк
2.Для соединения двух строк лучше использовать родной String.concat()
3.Для часто вызываемого метода, в котором будут соединяться больше двух строк, лучше использовать последний метод с очищением буфера и повторного его использования. Для thread-safety можно делать это поле ThreadLocal, например. Или вообще не-статичным членом класса.
4.В ходе экспериментов так же выяснилось, что одиночные a+b(+c) лучше заменять на a.concat, при большем количестве — StringBuilder.