I am building an application that is very similar to a shopping cart. The user selects a product from a list, and then based on that product, a few properties need to be set an
Since you're looking into an elegant solution, you may want to take a look at the Adaptive Object-Model Architectural style. You can search here, or here. Basically your problem can be solved by simply using the TypeSquare pattern, with maybe the Interpreter pattern for the business rules (if it ever gets that complex).