Determining the ideal shapes of molecules is a primary concern in computational chemistry. These shapes provide predictive information concerning the behavior of individual molecules as well as their behavior when interacting with other molecules.
Sometimes science isn't exact. There are multiple ways to arrive at an answer depending on the situation and goals. For instance, we could calculate the free energy of a molecule with either ab initio quantum dynamics or molecular mechanics. Within molecular mechanics there are multiple popular methods, such as the MMFF force field. Inside an application that contains multiple methods for accomplishing a task, we need a way to select among options in a consistent way. Enter: dependency injection.