java设计模式--适配器模式

2019-08-16 09:54:14来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

java设计模式--适配器模式

适配器模式:将一个本不能兼容客户端的类的接口通过适配器转为可以兼容的接口。

  这里有一个“中国学生接口”,定义了“说中国话”和“听中国话两个方法”

//中国学生接口
public interface ChineseStudent {
    void speakChinese();

    void listenChinese();
}

//中国学生类
public class ChineseStudent1 implements ChineseStudent {

    public String name;

    public ChineseStudent1(String name){
        this.name = name;
    }

    @Override
    public void speakChinese() {
        System.out.println("学生:" + name + "说话");
    }

    @Override
    public void listenChinese() {
        System.out.println("学生:" + name + "聆听");
    }
}

//测试方法
public class Test {
    public static void main(String[] args) {
        ChineseStudent chineseStudent = new ChineseStudent1("zhangsan");
        chineseStudent.speakChinese();
        chineseStudent.listenChinese();
    }
}

测试结果:

学生:zhangsan说话
学生:zhangsan聆听

 

  此时如果来了一个外国学生呢,这个外国学生不会说中文并且也听不懂中文,那么他如何去和其他中国学生交流呢,此时我们就需要一个“翻译”——适配器

//外国学生类
public class ForeignStudent {

    private String name;

    public ForeignStudent(String name){
        this.name = name;
    }

    public void speakEnglish(){
        System.out.println("学生:" + name + "说话");
    }

    public void listenEnglish() {
        System.out.println("学生:" + name + "聆听");
    }

}

 

//适配器类
public class Translator implements ChineseStudent{

    //实例外国学生类
    ForeignStudent foreignStudent = new ForeignStudent("Joe");
@Override
public void speakChinese() { foreignStudent.speakEnglish(); } @Override public void listenChinese() { foreignStudent.listenEnglish(); } }

 

//测试方法
public class Test {
    public static void main(String[] args) {
        ChineseStudent chineseStudent = new ChineseStudent1("zhangsan");
        chineseStudent.speakChinese();
        chineseStudent.listenChinese();

        ChineseStudent foreignStudent = new Translator();
        foreignStudent.speakChinese();
        foreignStudent.listenChinese();
    }
}

测试结果:

学生:zhangsan说话
学生:zhangsan聆听
学生:Joe说话
学生:Joe聆听

这样的话即使外国学生类不能直接实现“说中文”和“听中文”方法,但是通过适配器就完成了这一操作,便兼容了ChineseStudent接口。

总结:虽然适配器模式可以去兼容接口,但是这种操作通常是维护时不希望去改变兼容方与被兼容方的类时才被考虑的方法,如果在开发时能考虑到接口不兼容的问题,及时解决,通常问题就不会扩大到去兼容接口的程度。


原文链接:https://www.cnblogs.com/yimengyizhen/p/11146216.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:最有效率的算出2*8的结果

下一篇:Struts笔记2