Где хранить статические методы в ООП? - PullRequest
2 голосов
/ 24 декабря 2009

У меня есть класс Blog, который делает именно то, что вы думаете ... создать объект и обработать его. Эта часть хороша и чиста.

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

Мой вопрос: где мне хранить этот статический метод? Вот несколько вариантов, которые я могу придумать:

  • сохранить его как статический метод в классе Blog (может быть, вонючий, потому что он не имеет никакого отношения к объекту, который создает класс?)

  • создать новый класс для статических функций блога (кажется чрезмерным)

  • найди лучший способ сделать это вообще (да, но что?)

Ответы [ 5 ]

2 голосов
/ 24 декабря 2009

Создайте класс / интерфейс с именем BlogService, который будет содержать метод count. Другие методы, такие как findAll, findById и т. Д.

1 голос
/ 24 декабря 2009

найди лучший способ сделать это в целом (да, но что?)

Контроллер модельного представления

Преобразуйте свой блог в «Контроллер» на этом этапе

Создайте «Модель», которая может обрабатывать все ваши методы базы данных

В блоге класса вы можете вызывать модель по своему усмотрению (также предложите на этом этапе реорганизовать все запросы к базе данных для включения в модель).

(Для очень хорошего введения в MVC найдите CodeIgniter).

1 голос
/ 24 декабря 2009

Предположительно что-то управляет несколькими объектами блога, которые вы создаете? Если нет, то должен быть, и вот где метод принадлежит - не нужно, чтобы он был статическим.

1 голос
/ 24 декабря 2009

Вы также можете инкапсулировать доступ к базе данных в классе и добавить туда новый метод.

0 голосов
/ 24 декабря 2009

Вам нужен не статический метод, а статическая переменная. Статический метод - это просто функция в объекте, которая не принимает объект, а только переменные извне.

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