java兼容设计模式,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值