什么是适配器模式
简单来说,适配器就是用来填补实际情况和需求两者之间地差异。比如说我们需要5V电压,但是国内只给的是220V电压,那我们现在就需要一个适配器帮我们将电压转换。
通过继承方式实现适配器模式
Adapter模式,比如我们有一个原本的类A,A中有一个a方法,这时候我们有一个B类需要A中的a方法,但是它不能直接调用(因为某个原因不匹配,但是B确实需要a方法),这时候我们可以通过一个C适配器类来包装A类的a方法,我们需要做的就是让C继承A类拥有A类的a方法,然后我们再让C实现B接口(B是一个接口),B类有一个方法时b方法(b方法可以理解为将来需要将a封装或者使用a方法的方法),这时候C适配器就重写了B接口的b方法,当我们B接口需要使用b方法的时候我们new一个C适配器类就行了(拿C实现B接口)。
示例代码:
我们有一个Banner类,Banner类中有showWithParen,showWithAster方法,这两个方法分别是在使用括号括住字符串和使用两个*包住字符串。然后我们有一个Print接口,这个接口有weakPrint和strongPrint方法,其实这两个方法需要使用showWithParen,showWithAster方法,所以我们可以添加一个适配器,让这个适配器作为Print的实现类,我们在适配器中继承Banner并调用Banner中的showWithParen,showWithAster方法,然后在封装这两个方法成为Print接口需要使用的方法就行了。
Banner类
1 | public class Banner { |
Print接口
1 | public interface Print { |
PrintBanner适配器类
1 | public class PrintBanner extends Banner implements Print{ |
客户端类
1 | public class Main { |
使用委托方式实现适配器模式
其实使用委托的方法就是改动一下适配器类,使适配器不是继承原来的类而是拥有原来的类,将是一个变为有一个在面向对象里会有很多好处。这貌似是Java编程思想里看到的,,,我也忘了。
这时候我们需要改动一下适配器类
1 | public class PrintBanner implements Print{ |