У меня есть класс под названием documentsection, который определяет часть документа, которая впоследствии собирается в HTML.В нем есть свойства, и то, какие значения являются обязательными (или действительными), зависит друг от друга.Например:
a) Существует перечисление, называемое «тип раздела», которое может быть «видом» (в этом случае другое свойство, называемое «содержимое», содержит путь / имя файла для чтения файла).Или это может быть «текст», в котором текст свойства «контент» сам размещен в документе.
b) Существует еще одно перечисление, называемое «Действие», которое может иметь тип «добавление», «добавление» или «замена».В последнем случае релевантным становится другое свойство, называемое «tagtoreplace».Если мы добавляем / добавляем, это свойство tagtoreplace может быть пустым.
Каков наилучший способ представления таких взаимозависимостей?Есть несколько способов, которые я могу придумать, но ни один из них не пахнет красотой:
Когда вызывается метод для «генерации документа», просмотрите свойства, чтобы убедиться, что они соответствуют этомулогика.
Поставьте проверки в методах get / set.Одна из проблем заключается в том, что, когда я устанавливаю свой тип раздела «view», я не могу установить свое свойство «content» до строки или около того после этого, поэтому вы не можете отклонить запрос на установку этого параметра в этом месте.
Используйте отдельные свойства, чтобы как-то разделить области применения - например, «контент» в моем первом примере выше не должен использоваться для пути к файлу в одном случае, а набор содержимого HTML - в другом.Мне это не кажется правильным, но наличие отдельных свойств для каждого из них кажется чрезмерным.
Наследовать подклассы, каждый из которых имеет различные наборы дополнительных необходимых свойств.Поскольку могут быть различные комбинации типа раздела и типа действия, я не могу придумать элегантного способа внедрить всю эту логику в такую структуру.Но я не гуру ООП!
Есть мысли о лучшем подходе?
Спасибо!