本文實例講述了Java適配器模式定義與用法。分享給大家供大家參考,具體如下:
將一個類的接口轉(zhuǎn)換成客戶想要的另一個接口,適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作
適配器一共包括3種角色
1、目標(biāo):目標(biāo)是一個接口,該接口是客戶想使用的接口
2、被適配者:被適配者是一個已存在的接口或抽象類,這個接口或抽象類需要適配
3、適配器:適配器是一個類,該類實現(xiàn)了目標(biāo)接口并包含有被適配者的引用,即適配者的指著是對被適配者接口與目標(biāo)進(jìn)行適配
1
2
3
4
5
6
7
8
9
10
|
package org.zhy.adapter; /** * 目標(biāo) * @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; //目標(biāo)接口三相插座 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; /** * 洗衣機(jī) * @author zhengyi * */ public class Wash implements ThreeElectricOutlet { private String name; public Wash() { name= "洗衣機(jī)" ; } 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= "長江電視機(jī)" ; } public Tv(String s){ this .name=s; } @Override public void connectElectricCurrent() { turnOn(); } private void turnOn(){ System.out.println(name+ "開始播放節(jié)目" ); } } |
適配器的適配程度
1、完全適配
如果目標(biāo)接口中的方法數(shù)目與被適配者接口的方法數(shù)目相等那么適配器可將被適配者接口與目標(biāo)接口進(jìn)行完全適配
2、不完全適配
如果目標(biāo)接口中的方法數(shù)目少于被適配者接口的方法數(shù)目那么適配器只能將被適配者接口與目標(biāo)接口進(jìn)行適配
3、剩余適配
如果目標(biāo)接口中的方法數(shù)目大于被適配者接口的方法數(shù)目。那么適配器可將被適配者接口與目標(biāo)接口進(jìn)行完全適配,但必須將目標(biāo)多余的方法給出用戶允許默認(rèn)實現(xiàn)
適配器模式的優(yōu)點
1、目標(biāo)和適配者是完全解耦的關(guān)系
2、適配器模式滿足“開-閉原則”當(dāng)添加一個實現(xiàn)Adaptee接口的新類時,不必修改Adaptee,而Adaptee就能對這個新類的實例進(jìn)行適配
希望本文所述對大家java程序設(shè)計有所幫助。