У меня есть абстрактный класс GameCharacter, в котором есть несколько методов, которые мне потребуются от игровых персонажей.
Существует еще один абстрактный класс Cell, представляющий различные типы ячеек и связанные с ними операции.
Не каждая ячейка является транзитивной, и мне нужно установить GameCharacter только для подтипа ячейки GroundCell, который является транзитным.
Мой вопрос:
Если я хочу реализовать (в ячейке):
public abstract void setCharacter(GameCharacter character);
... и определять его тело только для того, чтобы что-то делать в GroundCell, и просто оставлять его пустым для других подтипов ячейки ... Это нарушит принцип разделения интерфейса или какой-либо другой принцип SOLID вообще?
У меня плохой запах при определении метода в супертипе для одного конкретного класса, но я не хочу использовать InstanceOf (), потому что он нарушает принцип Open-Closed.
Если это не практичное решение, то какое решение не нарушило бы модульную конструкцию?