I am working on a new domain model for an application that will have order processing for items built in (well, too keep it simple for this question anyway). I have a class "VendorItem" that represents items that can be ordered. Originally the "Order" class was going to have a list of VendorItems associated with it, but I have come across problems with it so far.
Let's say that the system has been creating orders for some time just fine. One day a user comes along and decides that a vendoritem has changed price or some other detail like packaging size. I wouldn't want the previous orders to be effected by such change.
At first wash I was going to make a "OrderLine" class that is basically a copy of the "VendorItem" class, but that just feels (smells?) wrong in the OO sense.
Is there a better way to refactor this so I don't have copies of classes and information in the domain model?