Я думаю, что вы имеете в виду шаблон flyweight. Фундаментальная идея этого шаблона заключается в том, что вы имеете дело со сложными объектами, экземпляры которых можно использовать повторно, и выдает различные представления их методами.
для правильной работы такого объекта он должен быть неизменным.
неизменность четко указывается при создании списка, как вы описали.
но поскольку нет внешнего объекта / параметров, с которыми работает SOME_LISt, я бы не назвал это примером шаблона с наименьшим весом.
Другим типичным свойством шаблона flyweight является «интернирование» таких объектов. при создании только одного экземпляра объекта это не имеет смысла.
, если вы много работаете со списками, которые передаются от одного объекта к другому, и вы хотите обеспечить неизменность, лучшим вариантом может быть использование Google-Collections .
final static ImmutableList<Integer> someList = ImmutableList.of(1, 2, 3);
Конечно, также возможно создавать более сложные неизменные объекты с помощью Builders.
это создает экземпляр неизменяемого списка. он по-прежнему будет реализовывать интерфейс List, но откажется выполнять любые операции add (), addAll () set (), remove ().
так что вы все равно можете передавать его методам, когда требуется интерфейс List, но при этом быть уверенным, что его содержимое не изменяется.