打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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.icode9.com/content-1-306301.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
9.1 类的适配器模式
Java设计模式 之 Adapter
Java与模式:缺省适配器模式
结构型模式之适配器模式
设计模式之Adapter--适配器模式
设计模式学习笔记(七)——Adapter适配器模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服