2010-11-19 6 views
1

Я занимаюсь разработкой BLL для своего приложения. Из того, что я видел/читал, кажется, что BLL должен быть без гражданства. Разве это не означает, что все методы BLL могут быть статическими? Или, по крайней мере, мне нужен только один экземпляр каждого класса BLL? Мне почему-то кажется странным, поэтому я подумал, что лучше проверить, что я не получаю неправильный конец палки, прежде чем я слишком сильно углубился в свои эксперименты.Должен ли BLL быть без гражданства?

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

Спасибо.

ответ

2

Теоретически, да, без гражданства BLL может означать, что все методы могут быть статическими.

Однако есть некоторые соображения, которые могут повлиять на использование экземпляров объектов BLL вместо статического.

  1. Статические методы вводят жесткую связь между классами и препятствуют использованию, например. взаимодействует с независимыми зависимостями пары. Использование интерфейсов улучшает тестируемость BLL, поскольку теперь его можно издеваться при написании модульных тестов для уровня обслуживания. Если ваши методы BLL являются статическими, тогда вы, как правило, не сможете сделать это без «обходных решений» (например, вам понадобится TypeMock или Microsoft Fakes в среде .Net).

  2. В сложном методе BLL (например, большой логике транзакций) вы можете реорганизовать каждое из своих бизнес-правил на несколько дискретных методов, а на выходе, возможно, скопировать все ошибки проверки и правила в единый агрегированный результат, содержащий все нарушения. В этом случае это может быть громоздким шунтированием сущности/сущностей, подлежащих проверке, и накапливать нарушения правил, и вместо этого выбирать для сохранения их состояния в экземпляре класса. Базовый класс или общий для вашего экземпляра BLL может помочь здесь.