Я изучаю некоторые концепции ОО, такие как шаблоны проектирования, чистый код и некоторые другие вещи, и у меня все еще есть некоторые сомнения относительно того, как действовать. Например, давайте взглянем на мой пример.Нужна помощь в моделировании классов
У меня есть класс Person, который является моделью. Я хочу добавить некоторые подтверждения для человека, например, проверить, соответствует ли возраст дате рождения, и проверить, содержит ли имя действительные символы.
У меня есть два подхода, но я не знаю, какой я должен использовать.
подход один: создать новый класс:
class ValidatePerson {}
и класс имеют методы: «validateAge()» и «validateName()» и каждый vallidation, что мне нужно, я буду иметь для внедрения нового метода.
подход два: создать абстрактный класс под названием: ValidatePerson {}, которые будут иметь некоторые методы commum на все проверки и я бы:
class ValidatePersonAge extends ValidatePerson { validate();}
class ValidatePersonName extends ValidatePerson {validate();}
Я хочу выбрать для захода на посадку два, причины каждое новое правило проверки, которое мне нужно будет добавить, будет новым классом и не будет влиять на других. Например, если мне нужно что-то изменить в методе commum, который требуется новому правилу, я мог бы просто перезаписать его. При первом подходе мне нужно будет добавить другой метод, а затем создать другой метод или изменить тот, который уже работает для других, что может привести к сбою.
Дело в том, что я в замешательстве все это, так как я новичок в программировании, и я хотел бы получить некоторую помощь и объяснение по этому поводу. Я также прочитал, что классы должны быть закрыты для изменения, но открыты для расширения (или что-то вроде этого).
Непонятно, что вы здесь задаете. С кем _exactly_ вы ищете помощь? – Oded 2010-11-25 19:08:02