Dependeny injection and when to use interface