Вопрос

Я читал на DDD, и думаю, что я могу использовать не так или хотя бы не так идеально. Мои классы обслуживания, как правило, имеют довольно много переменных экземпляров, содержащие репозиторий, и они, кажется, делают много работы (т. Е. У многих методов).

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

Спасибо!

Это было полезно?

Решение

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

Это не обязательно кодовый запах. Если ваш сервис требует много зависимостей для завершения своей работы, то это просто факт.

... Кажется, они много работают (то есть у многих методов).

Желательно ли создать более целенаправленные услуги?

В качестве общего правила, тем больше гранула вы можете сделать ваши сервисные интерфейсы (то есть тем меньше методах), тем лучше (когда-либо приходилось траловать через интерфейс с пятьдесят методов на нем ищете тот, который вы хотите позвонить?). Но если вы не выпускаете в качестве публичного API, гранулярность ваших сервисных интерфейсов может быть уточнена, когда вы идете вместе. Часто при запуске проекта я начну с одного сервиса и разделив ее со временем. Если вы являетесь потребителем этих сервисов, то когда вы начинаете почувствовать боль интерфейса, попадающего в большой, вы узнаете, что пришло время разбить его. Конечно, если это является Общественный API, то вам придется сделать намного больше намного переднего дизайна.

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

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

Причина без гражданства является желаемой целью, не имеющую государства значительно снижает возможности ошибок. Это упрощает тестирование метода обслуживания, ограничивая тестовые случаи для изменения параметров, а не беспокоиться о предыдущем состоянии службы. Это также может предложить преимущества производительности.

Другие советы

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

Вот статья Фаулера: http://martinfowler.com/articles/Inecning.html., Хотя я всегда нашел его немного поверх. Я бы попробовал пройти через учебное пособие, которое представляет собой использование контейнера DI / IOC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top