control and allows a program design to follow the dependency inversion principle. The term was coined by Martin Fowler. • Separates behaviour of something from its required classes 2 Component Service
doStuff() { System.out.println("Cats are better than dogs!") } } public class DogsService implements Service { @Override public void doStuff() { System.out.println("Dogs are better than cats!") } }