Ghost只会说英文,但是现在要跟我用中文交谈,因此他需要随身携带一个翻译,通过翻译才能与我进行有效沟通。
明确上述要求中的一点:即Ghost说话的方法为英文,而我接收的方法为中文,因此我们之间必须有个能转化英文为中文的接口,这就是适配器的概念。 
首先我们定义EnglishSpeaker和ChineseSpeaker接口:
interface EnglishSpeaker{
    public String speakEnglish();
}
interface ChineseSpeaker{
    public void speakChinese();
}然后定义外国人和翻译类——Ghost和Translater
class Ghostt implements EnglishSpeaker{
    @Override
    public String speakEnglish() {
        return "I speak English";
    }
}
class Translater implements ChineseSpeaker{
    private EnglishSpeaker englishSpeaker = null;
    public Translater(EnglishSpeaker englishSpeaker) {
        this.englishSpeaker = englishSpeaker;
    }
    private String translater(String eng){
        return "I speak Chinese";
    }
    @Override
    public void speakChinese() {
        System.out.println(
        translater(this.englishSpeaker.speakEnglish()));
    }
}让Translater拥有Ghost的引用,同时,将自己的说话方法定义为所需的speakChinese ,这样就可将任何一个EnglishSpeaker的对象说的话进行翻译了。 
在客户端,Translater可以这么用:
public static void main(String[] args){
    EnglishSpeaker engMan = new Ghostt();
    Translater translater = new Translater(engMan);
    translater.speakChinese();
}I speak Chinese
适配器模式是在适配双方都不便于修改的情况下所使用的。Adapter将Adaptee的方法包装到自身的复合要求接口规范的另一个方法中,从而能够适应所需接口的要求。 
看上去适配器模式 跟 代理模式很类似,但仔细观察会发现,代理模式是为了“偷梁换柱”,表面上跟被代理者一模一样,但其实内在的已经改变;适配器模式是在知道适配双方无法达成一致的情况下,进行的一个适配过程,当然,在这个适配过程中,还是可以改变适配双方的行为的,但是它所关注的点显然不是像代理模式那样“偷偷摸摸”,而是“光明正大”。再者,适配双方所做的事情一定是要相似或者一致,才能方便的使用适配器模式。
原文:http://blog.csdn.net/langduhualangdu/article/details/44132579