From the article:
When is an accessor okay? First, as I
discussed earlier, it's okay for a
method to return an object in terms of
an interface that the object
implements because that interface
isolates you from changes to the
implementing class. This sort of
method (that returns an interface
reference) is not really a "getter" in
the sense of a method that just
provides access to a field. If you
change the provider's internal
implementation, you just change the
returned object's definition to
accommodate the changes. You still
protect the external code that uses
the object through its interface.
In other words, use interfaces for both getter and setter methods when they are necessary that way you can maintain encapsulation. It is good practice in general to specify an interface for a return type or formal parameter.