Никаких шаблонов проектирования не требуется. На любом языке.
Я склонен сталкиваться с большим количеством кода, написанного людьми, которые читают шаблоны проектирования, а затем думают, что им следует использовать их повсеместно. В результате фактический код скрывается под тоннами интерфейсов, оболочек и слоев, и его довольно сложно прочитать. Это неправильный подход к шаблонам проектирования.
Шаблоны проектирования существуют для того, чтобы у вас был набор полезных идиом, пригодных для решения проблем. Но вы никогда не должны применять какой-либо шаблон, прежде чем выявить проблему. Keep It Simple Stupid всегда должен быть главным руководящим принципом.
Это также помогает думать о шаблонах проектирования как о концепции, позволяющей думать о проблеме, а не о конкретном шаблонном коде, который нужно написать. И о большей части стандартного обходного пути в качестве обходного пути к Java не хватает свободных функций и стандартных функциональных объектов, которые вы используете в большинстве других языков, в которых они есть (например, Python, C #, C ++ и т. Д.).
Я мог бы сказать, что у меня есть шаблон посетителя, но на любом языке с функциями первого класса это будет просто функция, принимающая функцию. Вместо фабричного класса у меня обычно есть только фабричная функция. Я мог бы сказать, что у меня есть интерфейс, но тогда это всего лишь пара методов, помеченных комментариями, потому что не было бы никакой другой реализации (конечно, в python интерфейс всегда является просто комментариями, потому что он имеет утку). Я до сих пор говорю о коде как об использовании шаблона, потому что это полезный способ думать об этом, но на самом деле не набирайте весь материал, пока он мне действительно не понадобится.
Итак, изучите все шаблоны как концепции . И забудьте о конкретных реализациях. Реализация меняется и должна меняться в реальном мире, даже в Java.