Если вы пишете паттернами приложения, то скорее всего вы пишете говно. Вы должны писать приложение исходя из задач.
Знание паттернов необходимо лишь для общения с коллегами, что бы доносить двумя словами мысль, а не сочинениями.
Для того что бы начать разрабатывать архитектуру, нужно сначала понять что это и понимать(а не знать) определение. 99% программистов не знают этого и пытаются из себя строить архитекторов.
ГОСТ Р 57100-2016 оно же
https://en.wikipedia.org/wiki/ISO/IEC_42010
В Яндексе ищется просто. Почитайте и осмыслите.
После этого поймите SOLID. Это будет трудно и тяжело, особенно в свете того, что половина статей от людей, которые сами SOLID не понимают.
Почти у каждого принципа SOLID есть четкий критерий, осванный на свойствах кода, а не на предположениях программиста о области применения.
Например принцип единой ответственности говорит о том, что у каждого класса состояние описывается набором свойств, которые всегда изменяются вместе. Если они могут быть изменены по отдельности, то это две разные ответственности.
Но свойство не является частью состоянием, если не используется в методах класса для вычислений или в выражениях. А например, просто всегда возвращаются.