<p>I have seen arguments for using explicit interfaces as a method of locking a classes usage to that interface.  The argument seems to be that by forcing others to program to the interface you can ensure better decoupling of the classes and allow easier testing.</p>

<p>Example:</p>

<pre><code>public interface ICut
{
    void Cut();
}
public class Knife : ICut
{
    void ICut.Cut()
    {
        //Cut Something
    }
}
</code></pre>

<p>And to use the Knife object:</p>

<pre><code>ICut obj = new Knife();
obj.Cut();
</code></pre>

<p>Would you recommend this method of interface implementation? Why or why not?</p>

<p>EDIT:
Also, given that I am using an explicit interface the following would NOT work.</p>

<pre><code>Knife obj = new Knife();
obj.Cut();
</code></pre>

If the client code doesn't care about anything other than the fact that it can use the object to
```
Cut()
```
things, then use
```
ICut
```
.