Итак, предположим, что у нас есть класс Foo со свойствами FirstProp и SecondProp и ThirdProp. Бизнес-мудрый, допустимые значения в SecondProp зависят от значения, установленного для FirstProp, и допустимые значения ThirdProp зависят от значений как FirstProp, так и SecondProp. Где он наиболее подходит, чтобы поставить эту логику?Наиболее подходящее место для проверки состояния объекта
Если он находится в настройщике каждого свойства, то есть тот факт, что пользователь класса может установить его ThirdProp перед двумя другими, потребовалось бы также принудительное выполнение порядка установки свойств? Это не кажется оптимальным. Кроме того, если мы хотим ограничить инициализацию объекта пармеризованными конструкторами, то это не будет практичным в таких случаях, как когда мы проектируем объект как тип значения (struct), поскольку конструктор по умолчанию в структуре всегда доступен.
Любой ввод оценивается.
Если я правильно вас понимаю, то такие проверки в более конкретных классах нарушают LSP. Рассмотрим классический прямоугольник <--> квадратный пример –
Это правда, в зависимости от его логики, это может быть нарушение LSP. Это действительно трудно понять из его примера. – Michael