I've been working on a comparative analysis system where a user fills in a form and i supply the user with offers from various vendors but slowly it grew into a very hard to manage and extend pile of code and clearly i'm in the need of a pattern here.
My current abstract design is quite simplistic:
1. Common base request
2. Vendor specific requests converted from the common base
And now for challenging part:
The common base request changes quite often (due to vendor changes or addition of new vendors) and every time it does i am forced to refactor my conversions for each vendor specific request.
Patterns i've considered:
1. Adapter. Not doable because there is a huge gap in vendor implementation (a vendor request might use only 10 or 20% of the common request during conversion and currently there is no common field that spans every request).
2. Command pattern. Already used to achieve something like specificRequest.GetQuotation(commonRequest);
3. Builder pattern. Sound a bit right but it does not quite help me deal with the changes i mentioned earlier.
I'm quite open to any suggestions (pattern or no-pattern) on how to better the current 'design':p