Нарушает ли переопределение конструктора принцип подстановки Лисков в частных случаях?
Предположим, что есть базовый интерфейс, в котором описано только поведение и некоторые базовые свойства но не определена сигнатура конструктора.
Эту сущность предполагается поставлять клиентам через инъекцию зависимости (либо напрямую, либо через фабрику). То есть, инстанцирование объекта всегда вынесено за пределы клиентов по определению. В таком случае, если потомки этой сущности будут иметь специфические конструкторы со специфическими сигнатурами, будет ли это нарушать LSP?
Ведь все клиенты будут завязаны строго на интерфейс уже инстанцированного объекта.
Нет, не нарушает. Принцип подстановки Лисков говорит о том, что клиент не должен видеть разницы между базовым объектом (в вашем случае интерфейсом) и его потомком. То есть потомки должны соблюдать контракт, определенный предком (могут делать его строже, но не слабее)
Конструктор не является частью интерфейса, поэтому переопределение конструктора никак принцип подстановки Лисков нарушать не будет.
Василий Банников, конструктор можно переопределить в потомке, изменить его сигнатуру. Либо вообще не объявлять его у родителя, а объявлять только у потомков.