Абстрактный класс - это хорошая практика? - PullRequest
0 голосов
/ 16 февраля 2010

У меня есть такой сценарий:

Это два предложения с этими атрибутами:

  • Таблица [Id, Name, Parent_Id]
  • Поле [Id, Name, Creation_Time, Creation_Date]

Является ли хорошей практикой создание абстрактного класса для реализации атрибутов и свойств для ID и NAME, чтобы сэкономить время на написание кода; или лучше переписать каждый атрибут и свойство в каждом классе? Или, может быть, использовать интерфейс?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2010

Я не думаю, что любой выбор имеет смысл. Если вы используете абстрактный класс, когда кто-то смотрит на класс, который наследует ваш абстрактный класс, он может изо всех сил пытаться выяснить, где находится эта информация. Вероятно, это худшая часть наследования: где-то скрывать важные детали в классе в цепочке наследования.

Интерфейс является своего рода контрактом, которого должен придерживаться класс, так что, как правило, он может использоваться другим механизмом. Отличным примером является итератор, такому классу обычно требуется метод «next». Вы гарантируете, что экземпляр класса может быть повторен, если он подписывается на интерфейс, который требует, чтобы у него был метод "next". Таким образом, механизм, который хочет перебрать ваш экземпляр, может знать, что он будет работать. Если это не имеет смысла для того, что вы хотите сделать, возможно, не используйте это.

0 голосов
/ 16 февраля 2010

Если вы хотите решить проблему повторения кода couse, вы можете использовать его.

Но если вы можете использовать его со стороны логики , вы должны понимать, что все классы, расширяющие этот класс abstarct, должны иметь что-то общее.

0 голосов
/ 16 февраля 2010

Подклассы должны иметь отношение «есть» со своим родительским классом. Таблица и поле кажутся настолько разными сущностями, что следует избегать наследования. Но с другой стороны, они могут иметь общий базовый класс, такой как DatabaseObject (или что-то в этом роде), который реализует общие атрибуты. Но если это кажется слишком искусственным, я бы избежал наследования в этих простых случаях.

...