Как выбирать направление архитектуры ООП приложения? Если требуется реализовать какое-то приложение, то какой из множества способов архитектуры выбирать? Даже какое-то событие в этом приложении (event) можно реализовать и как отдельный класс-синглтон, и как просто поле в другом классе, и как enum, и как полиморфный класс для множества событий. Есть ли практики, которым следует придерживаться, чтобы сделать правильную и простую архитектуру?