Java适配器模式定义与用法示例
本文实例讲述了Java适配器模式定义与用法。分享给大家供大家参考,具体如下:
将一个类的接口转换成客户想要的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
适配器一共包括3种角色
1、目标:目标是一个接口,该接口是客户想使用的接口
2、被适配者:被适配者是一个已存在的接口或抽象类,这个接口或抽象类需要适配
3、适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配者的指着是对被适配者接口与目标进行适配
packageorg.zhy.adapter;
/**
*目标
*@authorzhengyi
*
*/
publicinterfaceThreeElectricOutlet{
//用来刻画三相插座
publicabstractvoidconnectElectricCurrent();
}
packageorg.zhy.adapter;
/**
*适配器
*@authorzhengyi
*
*/
publicclassTreeElecricAdapterimplementsThreeElectricOutlet{
TwoElectricOutletoutlet;
publicTreeElecricAdapter(TwoElectricOutletteo){
this.outlet=teo;
}
@Override
publicvoidconnectElectricCurrent(){
outlet.connectElectricCurrent();
}
}
packageorg.zhy.adapter;
/**
*被适配者
*@authorzhengyi
*
*/
publicinterfaceTwoElectricOutlet{
//刻画两相插座
publicabstractvoidconnectElectricCurrent();
}
packageorg.zhy.adapter;
publicclassAppliction{
publicstaticvoidmain(String[]args){
ThreeElectricOutletoutlet;//目标接口三相插座
Washwash=newWash();
outlet=wash;
System.out.println("使用三相插座接通电流");
outlet.connectElectricCurrent();
Tvtv=newTv();
TreeElecricAdapteradapter=newTreeElecricAdapter(tv);
outlet=adapter;
System.out.println("使用三相插座接通电流");
outlet.connectElectricCurrent();
}
}
packageorg.zhy.adapter;
/**
*洗衣机
*@authorzhengyi
*
*/
publicclassWashimplementsThreeElectricOutlet{
privateStringname;
publicWash(){
name="洗衣机";
}
publicWash(Stringname){
this.name=name;
}
@Override
publicvoidconnectElectricCurrent(){
turnOn();
}
privatevoidturnOn(){
System.out.println(name+"开始洗衣服");
}
}
packageorg.zhy.adapter;
/**
*电视
*@authorzhengyi
*
*/
publicclassTvimplementsTwoElectricOutlet{
privateStringname;
publicTv(){
name="长江电视机";
}
publicTv(Strings){
this.name=s;
}
@Override
publicvoidconnectElectricCurrent(){
turnOn();
}
privatevoidturnOn(){
System.out.println(name+"开始播放节目");
}
}
适配器的适配程度
1、完全适配
如果目标接口中的方法数目与被适配者接口的方法数目相等那么适配器可将被适配者接口与目标接口进行完全适配
2、不完全适配
如果目标接口中的方法数目少于被适配者接口的方法数目那么适配器只能将被适配者接口与目标接口进行适配
3、剩余适配
如果目标接口中的方法数目大于被适配者接口的方法数目。那么适配器可将被适配者接口与目标接口进行完全适配,但必须将目标多余的方法给出用户允许默认实现
适配器模式的优点
1、目标和适配者是完全解耦的关系
2、适配器模式满足“开-闭原则”当添加一个实现Adaptee接口的新类时,不必修改Adaptee,而Adaptee就能对这个新类的实例进行适配
更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。