java 适配器模式_java适配器模式

属于结构型模式,其主要作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

比如你手机只有2.5mm接口(貌似就Nokia干的出来),但你只能买到3.5mm的,这时就需要买个适配器了(─.─|||

意图宗旨:

保留现有类所提供的服务,向客户提供接口,以满足客户的期望

什么时候可以使用它:

1你想使用一个已经存在的类,而它的接口不符合你的需求。没有2.5mm

2你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。

3你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口——仅适用于对象Adapter。

0de8a25b825df9521459864e7f307b42.png

f809661931dc8512e130137c35b01d3c.png

如何实现:

1类适配器

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Adapter extends Adaptee implements Target{

2 @Override

3 public void getHeadset2() {

4 this.getHeadset3();

5 }

6 public static void main(String args[]){

7 Target target = new Adapter();

8 target.getHeadset2();

9 }

10 }

11 interface Target{

12 void getHeadset2();

13 }

14 class Adaptee{

15 public void getHeadset3(){

16 System.out.println("我是3.5mm的耳机哦");

17 }

18 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

2对象适配器

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public class Adapter implements Target{

2 private Adaptee adaptee ;

3 public Adapter() {

4 super();

5 this.adaptee = new Adaptee();

6 }

7 @Override

8 public void getHeadset2() {

9 adaptee.getHeadset3();

10 }

11 public static void main(String args[]){

12 Target target = new Adapter();

13 target.getHeadset2();

14 }

15 }

16 interface Target{

17 void getHeadset2();

18 }

19 class Adaptee{

20 public void getHeadset3(){

21 System.out.println("我是3.5mm的耳机哦");

22 }

23 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

对象的适配器模式的不同之处在于Adapter角色封装了Adaptee角色,而不像类的适配器模式所采取的继承方式。其原理基本上是相似的

3缺省适配器模式

缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是空方法。而具体的子类都要继承此抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值