For example, suppose I have a Product class that I can add to a shopping cart. I may want to be able to package it together with another item when it is also in the cart and add a 15% discount.
Should the product class be decorated with a new subclass allowing deals, or should product class be redesigned to allow the cart attach a price reduction "strategy" object to the Product, reducing the price?
This is an abstract example, so take it where you will.