Does my design violate the Liskov Substitution Principle? I’m working on a Spring Boot application with the following structure for sending messages