Wow, I must be missing a whole lot of context in that discussion... (instant reaction as well, lol)
- a product (CD, book, etc.) does not 'buy' - it can be bought, sure, but it has no buying action. Even in another context a CD does not 'play'... aMusicPlayer.play(aCD).
- However, a customer can 'buy' a product...
- customer.buy(aCD) -or-
- customer.addToCart(aCD)
- customer.checkOut(aCart)
- Invoice.new(aCart), etc.
- ... but the CD doesn't DO anything.
- I get the idea that different products might have different behaviour when they are 'bought' - but these are, in this example, fulfillment - not the 'buy' action...
- aCDstream might be set for download
- aCDphysical might be set to physically pull off a shelf and ship
- aCDcare might send an email on warranty, whatever... but let's name it better than 'buy' :)
Tim, thanks for the link - I'm always trying to expand my thinking about object modeling - discovering cool ways/things others are thinking about... Now I have to go dust off all my old POS (point of sale, not piece of s#&t) code and see how poorly I may have modeled those environments!!
Thanks for the morning diversion! Cheers.