I have a decision to make and I am wondering what would be the better solution. I am refactoring an older application and intend to really get into the nuts and bolts of it.
There are 8 report types currently and one of the modifications are to allow different reports to be "saved" in different ways. My two thoughts on it were
Have an Abstract Class with an abstract save method, then each report type can define its own way of doing things. Possibly have other abstract classes inheriting from that one, each implementing a virtual
Save()
method. Then the report classes can inherit from the one with the relevant save mechanism.Have a report interface, which has a method signature like
void Save(ISaveMechanism saveMechanism);
Then have an interface with a Save()
method, then each report type can use saveMechanism.Save();
and just use the concrete implementation required.
Would either solution cause more issues/drawbacks than the other? This project doesn't currently have any associated unit tests but if given time, it would be good to add some later.