When in Doubt, Create an Interface
coliveira.net
coliveira.net
I think all of this should be done iteratively. Do the concrete class. If it turns out you need multiple implementations or subclasses, then go ahead with all the complexity. Too much of "best practices" leads to overdesign and implementation and maintenance costs.