Q:

FTP Design Pattern

I'm working on a project that needs to use multiple types of FTP connections (SFTP, FTPS, and regular old FTP currently).  I'm using JSch for SFTP and Commons Net for FTPS and FTP.  
The problem I'm running into deciding how to implement this in a way that will prevent other people from having to know about the libraries and also make updating and maintenance easy.  Currently I have an FTP interface and classes that implement that for each type of connection.  I can't shake the feeling that there must be a better way since this seems to just add a step between the production code and the library. 
Are there any design patterns that might suit this implementation better? 

A:

The way to go is indeed having a common interface for all of them, as well as adapters that implement it for each of the libraries. 
Having a common interface you may be able to set the dependency from outside (read about dependency injection), and/or implement a factory that for some generic specification returns the right implementation.