Ява: создание или наследование? - PullRequest
1 голос
/ 18 ноября 2009

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

Ответы [ 3 ]

4 голосов
/ 18 ноября 2009

Создание нового объекта регистрации. В конце концов, ваши объекты не являются регистраторами?

Если вы наследуете от логгера, вы дополнительно получаете следующие проблемы

  1. Ваш объект может быть использован в качестве логгера, что, вероятно, не то, для чего он предназначен
  2. Вы не можете наследовать от какого-то другого класса
  3. Вы не можете легко переключать политику ведения журнала, особенно во время выполнения

В общем, нужно быть очень осторожным, когда нужно провести обобщение между двумя классами.

2 голосов
/ 18 ноября 2009

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

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

0 голосов
/ 18 ноября 2009

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

Если ваш объект должен выполнить какую-то задачу (службу) или манипулировать некоторыми данными, это нормально. Но это не регистратор.

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

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

...