本文实例讲述了Java适配器模式定义与用法。分享给大家供大家参考,具体如下:
将一个类的接口转换成客户想要的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
适配器一共包括3种角色
1、目标:目标是一个接口,该接口是客户想使用的接口
2、被适配者:被适配者是一个已存在的接口或抽象类,这个接口或抽象类需要适配
3、适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配者的指着是对被适配者接口与目标进行适配
1
2
3
4
5
6
7
8
9
10
|
package org.zhy.adapter; /** * 目标 * @author zhengyi * */ public interface ThreeElectricOutlet { //用来刻画三相插座 public abstract void connectElectricCurrent(); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package org.zhy.adapter; /** * 适配器 * @author zhengyi * */ public class TreeElecricAdapter implements ThreeElectricOutlet { TwoElectricOutlet outlet; public TreeElecricAdapter(TwoElectricOutlet teo) { this .outlet=teo; } @Override public void connectElectricCurrent() { outlet.connectElectricCurrent(); } } |
1
2
3
4
5
6
7
8
9
10
|
package org.zhy.adapter; /** * 被适配者 * @author zhengyi * */ public interface TwoElectricOutlet { //刻画两相插座 public abstract void connectElectricCurrent(); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package org.zhy.adapter; public class Appliction { public static void main(String[] args) { ThreeElectricOutlet outlet; //目标接口三相插座 Wash wash= new Wash(); outlet=wash; System.out.println( "使用三相插座接通电流" ); outlet.connectElectricCurrent(); Tv tv= new Tv(); TreeElecricAdapter adapter= new TreeElecricAdapter(tv); outlet= adapter; System.out.println( "使用三相插座接通电流" ); outlet.connectElectricCurrent(); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package org.zhy.adapter; /** * 洗衣机 * @author zhengyi * */ public class Wash implements ThreeElectricOutlet { private String name; public Wash() { name= "洗衣机" ; } public Wash(String name){ this .name=name; } @Override public void connectElectricCurrent() { turnOn(); } private void turnOn(){ System.out.println(name+ "开始洗衣服" ); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package org.zhy.adapter; /** * 电视 * @author zhengyi * */ public class Tv implements TwoElectricOutlet { private String name; public Tv() { name= "长江电视机" ; } public Tv(String s){ this .name=s; } @Override public void connectElectricCurrent() { turnOn(); } private void turnOn(){ System.out.println(name+ "开始播放节目" ); } } |
适配器的适配程度
1、完全适配
如果目标接口中的方法数目与被适配者接口的方法数目相等那么适配器可将被适配者接口与目标接口进行完全适配
2、不完全适配
如果目标接口中的方法数目少于被适配者接口的方法数目那么适配器只能将被适配者接口与目标接口进行适配
3、剩余适配
如果目标接口中的方法数目大于被适配者接口的方法数目。那么适配器可将被适配者接口与目标接口进行完全适配,但必须将目标多余的方法给出用户允许默认实现
适配器模式的优点
1、目标和适配者是完全解耦的关系
2、适配器模式满足“开-闭原则”当添加一个实现Adaptee接口的新类时,不必修改Adaptee,而Adaptee就能对这个新类的实例进行适配
希望本文所述对大家java程序设计有所帮助。