Когда лучше использовать новый класс, а не добавлять к существующему классу? - PullRequest
0 голосов
/ 27 февраля 2009

У меня есть класс Player в бизнес-уровне моего веб-приложения.

В классе игрока есть поля PlayerID, CategoryID и CountryID

Функция в классе Player вызывает функцию в классе PlayerDB на уровне доступа к данным, которая, в свою очередь, вызывает сохраненный процесс, который возвращает данные для PlayerID, CategoryID (внешний ключ к таблице категорий) и CountryID (внешний ключ к таблице страны) Стол игрока.

У меня теперь есть ситуация, когда я хочу добавить название страны и изображение страны (URL-путь) к вышеуказанному вызову, возвращая новые поля из таблицы "Страна" для каждого идентификатора страны.

У меня вопрос: добавить ли название страны и изображение страны в качестве дополнительных полей в класс Player, или у меня есть новые классы, называемые Country (BLL) и CountryDB (DAL), и новый сохраненный процесс?

Я хочу делать то, что является лучшей практикой, а не то, что может быть самым простым способом.

Если это уместно, я использую ASP.NET, VB.NET и SQL2005.

Как вы, вероятно, можете сказать, что я новичок, так что прости меня, если я не использовал правильную терминологию в своем вопросе. Я надеюсь, вы поняли идею.

Ответы [ 5 ]

1 голос
/ 27 февраля 2009

Вы можете сделать класс страны и, используя композицию объектов, сделать класс страны свойством класса игрока.

Public Property Country() as BLL.Country
' etc

Тогда вы бы назвали такие методы:

Dim p as BLL.Player
a = p.Country.ID
b = p.Country.Name
c = p.Country.Image
d = p.ID
e = p.CategoryID
1 голос
/ 27 февраля 2009

Похоже, вам следует создать новый класс.

Это зависит от того, для чего используется класс "Player". Если это универсальный тип (и звучит так, как он есть), который используется в нескольких частях вашего приложения, добавление настройки для отдельной части вашего приложения в класс Player, вероятно, является плохой вещью.

Однако, если (например) класс Player использовался только в одном пользовательском интерфейсе в вашем приложении, и его целью было представить Player только для этой части приложения, то добавление этих полей может быть разумным делаем.

1 голос
/ 27 февраля 2009

Создать новый класс. Если это имеет смысл как отдельный логический объект, то это должен быть его собственный класс.

0 голосов
/ 27 февраля 2009

Как вы собираетесь использовать данные страны? Ты будешь все время писать player.getCountry().getName()? Если это так, вы можете написать функцию player.getCountryName(), которая вызывает country.getName() внутри.

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

0 голосов
/ 27 февраля 2009

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

Ever.

...