Проектирование библиотеки со вспомогательными методами на статической основе или на основе интерфейса? - PullRequest
0 голосов
/ 22 октября 2010

Я проектирую библиотеку .Net, которая предоставляет методы, все из которых могут быть помечены только как вспомогательные методы. Принимает PersonID, RoleID и т. Д., Возвращает рассчитанную зарплату, зарплату за весь год, бонус и т. Д.

  • Можно ли проектировать только статический класс, имеющий методы, такие как GetSalary (), GetBonus (), GetHistoricSalary ().
  • Или я должен иметь интерфейс ISalaryProcessor и иметь эти методы там?

При варианте 2 у реализующего класса только поведение, а не данные, при попытке заключить договор я создаю нежелательную чистую фабрикацию?

1 Ответ

2 голосов
/ 22 октября 2010

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

Это также позволяет клиентам программировать на интерфейсе и следовать LSP в своей программе, делая реализацию отделенной от их приложения.

Для такой гибкости я бы пошелинтерфейсы.

В статической библиотеке нет возможности ее отключить, и вводится прямая зависимость (от LSP).

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