IMHO it depends. Sometimes it's handy to make cache in memory implementation and start to use it, and later to replace it with sqlite implementation, this is a good fit interface approach. But if you know that you won't have another implementations, for backend for instance, then no need for excessive interfaces.