можешь пример привести "недостаточно абстрактно"?
Когда нужно что обобщить и вынести общую логику, я ещё более-менее могу с этим справиться. А когда надо переделать кусок архитектуры так, чтобы все общались между собой через интерфейсы или по типу базового класса, разделить что-то по слоям абстракции, я не понимаю, как заставить классы общаться между собой и как именно лучше выделить ответственности