Лучше добавить метод в заранее определенный класс или сделать подкласс? - PullRequest
1 голос
/ 13 января 2012

Скажем, вы хотите добавить метод lengthOfFirstLine в предопределенный класс File.Лучше ли модифицировать существующий класс или создать новый класс, который расширяет класс File новым методом?

EDIT - В частности, ситуация такова, что классне хватает одного метода в частности.Я не хочу полностью менять класс, а дополнить его этим методом.

Ответы [ 3 ]

5 голосов
/ 13 января 2012

Зависит от того, применим ли метод ко всем элементам класса File.Например, lengthOfFirstLine не применяется к двоичным файлам, поэтому, вероятно, он не принадлежит универсальному классу File, но если ваш класс представляет только текстовые файлы, он должен идти туда.

1 голос
/ 13 января 2012

Согласен с Луисом и Лестером.Если вы используете .Net, то методы расширения - это путь для такого рода функциональности.Но вы должны попытаться не добавлять LengthOfFirstLine в базовый класс, если вы можете открывать все виды файлов, например, двоичные файлы.Вы бы поместили его в FileClass и добавили бы к нему метод.

Помните, что методы расширения в .Net в любом случае являются синтаксическим сахаром.Вы можете смоделировать его на своем родном языке, используя статические классы и методы.Это то, что .Net делает в любом случае.

Например, есть статический класс FileHelpers и различные статические вспомогательные методы.Первым параметром для каждого из этих статических методов будет класс File.Таким образом, вы можете назвать это, используя FileHelpers.GetLengthOfFirstLine(myOpenedFile)

1 голос
/ 13 января 2012

Для языков .NET также есть возможность использования методов расширения .Таким образом, вам не нужно «пачкать» класс, добавляя к нему вспомогательные / служебные методы, и наследование также не требуется - вы добавляете функциональность в класс, просто добавляя оператор using в свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...