Code:
class MutualFundOrderProvider { private Dictionary<string,string> GetKeyValues(MutualFundOrderInfo info) { ... } } class GICOrderProvider { private Dictionary<string,string> GetKeyValues(GICOrderInfo info) { ... } } class EquityOrderProvider { private Dictionary<string,string> GetKeyValues(EquityOrderInfo info) { ... } } //visitor approach //Create interface interface IKeyValueComputer { Dictionary<string,string> GetKeyValues(EquityOrderInfo info); Dictionary<string,string> GetKeyValues(GICOrderInfo info); Dictionary<string,string> GetKeyValues(MutualFundOrderInfo info) } //implementation class KeyValueComputer:IKeyValueComputer { //all implementations... } //another interface interface IComputeKeyValues { Dictionary<string,string> ComputeKeyValues(IKeyValueComputer keyvalcomp) } class EquityOrderInfo: IComputeKeyValues { public Dictionary<string,string> ComputeKeyValues(IKeyValueComputer keyvalcomp) { return keyvalcomp.GetKeyValues(this); } } //MutualFundOrderProvider class MutualFundOrderProvider { public void Translate(MutualFundOrderInfo info) { IKeyValueComputer keyvalcomp=new KeyValueComputer(); info.ComputeKeyValues(keyvalcomp); } }
No comments :
Post a Comment