Was deciding between the 3 today, did a fair bit of research and asking around. Conclusion is some rough heuristics for the choice:
if (need to be configured):
else if (need to generate instance of object):
Of course, this is far from definitive, but a good starting point for decision-making.