There exists interface Algorithm
There exists class MathAlgorythm implements Algorithm (returns MathResult, which implements Result)
There exists class ChemitryAlgorythm implements Algorithm (returns ChemitryResult, which implements Result)
Additionally, there exists a Context class, which is used to pass data to these Algos. Data is passed in the following manner:
public Result executeStrategy(Data data) {
return algo.execute(data);
}
Suppose I, executeStrategy and get back
return MathAlgorithm.execute(data); I get something of type Result right?
I then execute
return ChemitryAlgorithm.execute(data); Again i get something Result
Question:
Result is an interface. I need to gain access to concrete class implementation as MathResult or ChemistryResult. In other words. Once i get something of type Result, i need to dig deeper and know what class hides behind the interface
I hope this rambling is not too confusing.
Thank you for reading and responding
If you give
Resulta method likeT get()which the concrete implementations have to implement, then you don’t need to know about the concrete implementations.