Будет ли добавление метода, необходимого в подклассе, к абстрактному классу нарушить принцип разделения интерфейса? - PullRequest
1 голос
/ 09 марта 2019

У меня есть абстрактный класс GameCharacter, в котором есть несколько методов, которые мне потребуются от игровых персонажей.

Существует еще один абстрактный класс Cell, представляющий различные типы ячеек и связанные с ними операции.

Не каждая ячейка является транзитивной, и мне нужно установить GameCharacter только для подтипа ячейки GroundCell, который является транзитным.

Мой вопрос:

Если я хочу реализовать (в ячейке):

public abstract void setCharacter(GameCharacter character);

... и определять его тело только для того, чтобы что-то делать в GroundCell, и просто оставлять его пустым для других подтипов ячейки ... Это нарушит принцип разделения интерфейса или какой-либо другой принцип SOLID вообще?

У меня плохой запах при определении метода в супертипе для одного конкретного класса, но я не хочу использовать InstanceOf (), потому что он нарушает принцип Open-Closed.

Если это не практичное решение, то какое решение не нарушило бы модульную конструкцию?

...