Let's say you have a domain entity User and you want to support the ability for a User to add an item to their shopping cart. Now, we want to make sure that the items in the shopping cart are unique, so we create the following function inside the User class:
function AddItemToCart(Item item)
{
// Add business logic to make sure item is unique
}
This works great. But what if we now want to also e-mail the user whenever an item is added to their cart? We can add this into the AddItemToCart, but it would require injecting some sort of IEmailer dependency into the User class.
The alternative would be to create a service to handle this transaction (e.g. ShoppingCartService) which would perform the business logic and send out the e-mail. However, this leads to a rather anemic domain (i.e. the User class is nothing but getters/setters)