Осторожнее с шаблонами дизайна.Если вы разбросаете их по всему коду, надеясь, что все будет работать отлично, у вас скоро будет нечитабельный, полный беспорядок.Это рецепты, а не решения.
Мой вам совет: возьмите лист бумаги и карандаш, начните рисовать все сущности вашего домена со всеми их реквизитами и посмотрите, как они соотносятся.Если вы хотите серьезно отнестись к этому, вы можете сделать что-то вроде this .
При определении своих сущностей стремитесь к высокой когезии и слабой связи .
Высокая сплоченность означает, что вы должны сохранять сходные функции вместе.В очень простом примере, если у вас есть класс, который читает материал из файла и обрабатывает его, класс имеет низкую сплоченность, поскольку чтение и обработка - это две совершенно разные функции.В этом случае вам нужен класс для каждой функции.
Что касается слабой связи, это означает, что ваши сущности должны быть независимы друг от друга.Используя приведенный выше пример, предположим, что вы теперь являетесь счастливым владельцем двух тесно связанных классов: один, который читает материал из файла (Reader), и другой, который обрабатывает этот материал (Processor).Теперь предположим, что класс Processor имеет экземпляр класса Reader и вызывает его, чтобы получить входные данные.В этом случае мы можем сказать, что оба класса тесно связаны, так как Processor не будет работать без Reader.В мире ООП решением для этого обычно является использование интерфейсов.Вы можете найти хороший пример здесь .
Определив начальную модель своего домена и собрав как можно больше знаний о нем, вы можете начать думать об архитектуре реализации.Это где вы можете начать думать об архитектурных шаблонах.Архитектура, управляемая событиями, чистая архитектура, MVP, MVVM ... Все будет зависеть от вашего домена.Ваша работа - знать, какой шаблон подойдет лучше всего.Оповещение о спойлере: это может быть чрезвычайно трудно сделать правильно даже для опытных инженеров, поэтому не бойтесь потерпеть неудачу.
Наконец, оставьте шаблоны проектирования на этапе реализации.Их использование полностью зависит от ваших задач и решений.Кроме того, не заставляйте их.В идеале вы решите проблему и, ЕСЛИ ПРИМЕНИМО, вы увидите появление паттерна.Поверьте мне, последнее, что вы хотите, это иметь дело с design patternitis .В любом случае, если вам нужна литература по шаблонам, я настоятельно рекомендую эту книгу .Это здорово, независимо от вашего уровня инженера.
Дополнительная литература:
Удачи!