本文實例講述了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程序設計有所幫助。