ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-07 14:57:35  阅读:167  来源: 互联网

标签:java name void public 学生 ChineseStudent 设计模式 适配器


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

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

//中国学生接口
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接口。

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

标签:java,name,void,public,学生,ChineseStudent,设计模式,适配器
来源: https://www.cnblogs.com/yimengyizhen/p/11146216.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有