适配器设计模式

在学习SpringMVC框架时,看到源码中使用了适配器设计模式,不学习一下这种设计模式还真是看不懂源码了。经过一个上午的学习写下了这篇文章,用以记录。

 

适配器设计模式能解决什么问题?

 

答:使得原本由于接口不兼容不能在一起工作、不能统一管理的类可以在一起工作、可以进行统一管理。

举例解释

有三个工种,教师,程序员,厨师、他们分别有着与其工作相关的方法, teach(), program(), cook() 。

 

有对应的接口  :  Teacher , Programmer , Cooker

接口中的方法  :  teach() , program() , cook()

有对应的实现类 :TeacherImpl , ,ProgrammerImpl , CookerImpl

 

需求:打印出这三个工种所做的工作内容。

不使用适配模式的时候,可以这样写:

  

 

这样写的缺点是:要知道每一个接口里面指定的方法。

为了解决这个问题,我们先使用一种单个适配器的模式(目的是:引出多适配器)

 

单个适配器:

单个适配器类似于工具类,其提供了一个方法 work(Object worker) ,根据传进来的worker类型调用对应的方法。

这样就不需要知道每一个接口内部都写了什么方法了。

1.适配器接口:

2.实现类

3.测试类

 

 

单个适配器不需要再去了解每个接口内都写了什么方法了,只需要统一调用work()就可以实现需求了。

但是单个适配器的缺点 : 如果增加了新的工种,需要修改适配器实现类,如果增加了一百种,一千种呢?所以这不是解决问题的方法。

 

多个适配器:

使用单个适配器的问题已经说过了,怎么去解决呢? 答案就是使用多适配器,如果每一个工种都有对应的适配器接口实现类的话,就可以通过统一管理对应的适配器接口实现类(因为都实现了相同的接口,所以可以统一管理),进而统一管理不同的工种,大致思路为:

1.为每一个工种都建立一个对应的适配器接口实现类,实现类中调用对应工种的方法。

2.在使用时,需要先获取到所有的适配器,然后遍历需求中给出的所有的工人,再嵌套循环遍历每一个适配器,找出与传入工人对应的适配器(因为这个需求,所以在适配器接口中应该有一个boolean isSupport( Object worker)方法,来判断这个适配器是否支持传入的worker),找到对应的适配器后,调用work()方法就实现了统一管理。

代码:

1.适配器接口
    

2.不同工种对于适配器的的实现
    
    
    

3.测试类
    

多个适配器的缺点:需要为每一个工种添加一个适配器

 

 

我之所以只截图不粘代码,目的是让各位都能看,但是如果想跑一下就必须自己写,只有写一遍才会有所感悟。

 

 

 

 

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值