Я изучаю некоторые концепции ОО, такие как шаблоны проектирования, чистый код и некоторые другие вещи, и у меня все еще есть некоторые сомнения относительно того, как действовать дальше.Например, давайте посмотрим на мой пример.
У меня есть класс Person, который является моделью.Я хочу добавить несколько проверок человеку, например проверить, соответствует ли возраст дате рождения и проверить, содержит ли имя допустимые символы.
У меня есть два подхода, но я не знаю, какой из них мне следует использовать.
Подход первый: я создаю новый класс с именем:
class ValidatePerson {}
, и у класса есть методы: "validateAge ()" и "validateName ()" и каждое утверждение, которое мне нужномне нужно будет реализовать новый метод.
Подход второй: я создаю абстрактный класс: ValidatePerson {}, который будет иметь несколько методов commum для всей проверки, и я получу:
class ValidatePersonAge extends ValidatePerson { validate();}
class ValidatePersonName extends ValidatePerson {validate();}
Я хочу выбрать второй подход, потому что каждое новое правило проверки, которое мне придется добавить, будет новым классом и не повлияет на другие.Например, если мне нужно изменить что-то в методе commum для нового правила, я могу просто перезаписать его.При первом подходе мне нужно было бы добавить другой метод, а затем создать другой метод или изменить тот, который уже работает для других, что могло бы привести к сбою.
Дело в том, что я отчасти путаюсь со всемиэто, так как я новичок в программировании, и я хотел бы видеть некоторую помощь и объяснение по этому поводу.Я также читал, что классы должны быть закрыты для изменения, но открыты для расширения (или что-то подобное).