Scott,
Thanks for the great book, it's got my head spinning a little but I like the very structured approach to the way you design your code.
I'm playing around with the Agatha's storefront code, and I'm interested in trying to add support for custom discount rules similar to what Magento describes here:
http://www.magentocommerce.com/knowl...-do-i-use-them
Any ideas or help you can give me to get started would be much appreciated. Should I create a "DiscountService" class that has some methods on it to take in Product or Cart objects and applies discounts to them, and then hands them back to the cart to update and persist to the DB? Should the Cart or Product classes know how to "discount itself" or should that functionality be injected in somehow?