JAVA适配器模式
2016-05-01 15:55
429 查看
今天是五一,小伙伴们多出去玩了,每逢节假日告诉我不要出去玩,人群汹涌,人累心更累。所以就宅在宿舍了,舍友叫玩LOL游戏,昨天就一直玩游戏,今天就不玩了,无聊就写起了博客来了,劳动节也要劳动的,唉,生活就像强奸犯,如果不能反抗,就欣然接受!劳动最光荣!扯犊子,瞎BB感觉自己还是挺擅长的,好了回到重点吧。
1.适配器模式概念
适配器模式是结构型模式之一的一种。
定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。又叫变压器模式,变压器将一种电压变成另一种电压。
核心:将一个接口或类换成其他接口或者类。
角色:
1.目标角色(Target):客户所期待的接口。(目标可以是具体的或抽象的类,也可以是接口)
2.源角色(Adaptee):需要适配的类或适配者类。(被转换成目标角色的源角色)
3.适配器(Adapter):通过包装一个需要适配的对象(源角色),把原接口转换成目标接口。
分类:
1.类的适配器(采用继承实现,不推荐使用,Java 不支持多继承)
2.[b]对象适配器(采用对象组合方式实现,推荐使用)[/b]
生活中的实例:我们手机在充电的时候,不可能直接在220V电源上直接充电,而是手机“充电器”进行转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个“充电器”就起到了适配的作用。
目标角色:Target接口
类的适配器的适配器:Adapter
2.增加类的透明性,提高类类的复用度,增强代码的灵活性。
2.系统需要使用现有的类,而这些类的接口不符合系统的接口。等等场景。
1.适配器模式概念
适配器模式是结构型模式之一的一种。定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。又叫变压器模式,变压器将一种电压变成另一种电压。
核心:将一个接口或类换成其他接口或者类。
角色:
1.目标角色(Target):客户所期待的接口。(目标可以是具体的或抽象的类,也可以是接口)
2.源角色(Adaptee):需要适配的类或适配者类。(被转换成目标角色的源角色)
3.适配器(Adapter):通过包装一个需要适配的对象(源角色),把原接口转换成目标接口。
分类:
1.类的适配器(采用继承实现,不推荐使用,Java 不支持多继承)
2.[b]对象适配器(采用对象组合方式实现,推荐使用)[/b]
生活中的实例:我们手机在充电的时候,不可能直接在220V电源上直接充电,而是手机“充电器”进行转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个“充电器”就起到了适配的作用。
2.UML图
类的适配器UML:
对象适配器UML:
3.具体代码:
源角色:Adaptee
public class Adaptee { //原有的需求 public void request(){ System.out.println("原有的业务处理"); } }
目标角色:Target接口
public interface Target { //目标接口转换处理 public void handleRequest(); }
类的适配器的适配器:Adapter
public class Adapter extends Adaptee implements Target{ //适配器继承Adaptee类,实现Target接口,将Adaptee类转换成了Target接口 @Override public void handleRequest() { //实现原有的业务逻辑 super.request(); } }
类的适配器的测试:Client
//客户端 public class Client { public static void main(String[] args) { Target target=new Adapter(); target.handleRequest(); } }
对象适配器的适配器:Adapter2
public class Adapter2 implements Target{ //适配器实现Target接口,对象组合 private Adaptee adaptee;//对象 public Adapter2(Adaptee adaptee) {//组合 super(); this.adaptee = adaptee; } @Override public void handleRequest() { //实现原有的业务逻辑 adaptee.request(); } }
对象适配器的测试:Client2
//客户端 public class Client2 { public static void main(String[] args) { Adaptee adaptee=new Adaptee();//对象 Target target=new Adapter2(adaptee);//组合 target.handleRequest(); } }
4.小结
优点:
1.适配器可以将两个没有关系的类关联在一起。2.增加类的透明性,提高类类的复用度,增强代码的灵活性。
使用场景
1.旧的系统开发的类已经实现了一些功能,但是客户端却只能以另外接口的形式访问,但我们不希望手动更改原有类的时候。2.系统需要使用现有的类,而这些类的接口不符合系统的接口。等等场景。
相关文章推荐
- Java对象的序列化与反序列化
- JAVA CAS原理深度分析
- Java 8 表示两个时间点距离
- 20145329《Java程序设计》实验四总结
- HBase的javaApi一个应用(创建删除表等)
- jdk环境变量
- java语言的跨平台型原理
- 深入Java单例模式
- 读《Spring-技术内幕》-第二章:IoC容器的实现-1
- 20145327 《Java程序设计》第九周学习总结
- eclipse build workspace太慢或者 js出错问题解决
- java面向对象
- java zxing 生成二维码工具类
- 疯狂java讲义笔记2:面向对象的基础
- 切换默认jdk版本执行
- 查看死锁:
- 《Java中的不可变类》
- Java---类反射(1)---类反射入门和基础
- Java---类反射(1)---类反射入门和基础
- 讲义四 包的理解