Java设计模式(5)--适配器模式
来源:互联网 发布:python中的str是什么 编辑:程序博客网 时间:2024/05/29 18:36
适配器模式主要是用于补救的,为什么这么说呢,拿上一章的观察者模式来说:
1、jdk中的观察者Observer,是一个接口,如果我们有一个类Male,要实现观察者的功能,那么直接实现Observer接口即可,但是,如果需要是,既要有Observer的功能,也要有User(另一个类)的功能,我们要怎么做呢?这里,类适配器就发挥作用了
public class Male extends User implement Observer{}
只需要继承目标类,实现Observer接口,就实现了我们上述的目的,这种适配器叫做类适配器。
2、jdk中的被观察者Observable是一个类,与上面的需求类似,我们的Male类,需要有Observable被观察者的功能,又要具有User类的功能,那这怎么办?这里最好不要让User去继承Observable类,这将破环原有的继承体系。由于Java继承只允许继承一个类,我们使用类适配器将无法满足我们的需求,那么,就要使用对象适配器了。
class Male extends User{ private Observable observable; //get set方法}
这就是对象适配器,采用组合的模式,这样,User和Observable两个类的功能我们都可以使用了。当然,这里不是最好的方式,因为实际需求中不仅仅只有一个Male类,可能还有其他类需要有类似的需求,我们重复这样定义实在是太麻烦了,所以,我们定义一个公共的类,作为一个适配器,Male类直接继承这个公共的适配器就能够满足需求了。
class BaseUserObservable extends User{ private Observable observable; //get set方法}class Male extends BaseUserObservable {}
这样就是对象适配器了。
根据目的的不同,还可以分为 定制适配器和缺省适配器。上面所说的,是目的性很强的,需要实现什么什么功能,就是定制适配器,而缺省适配器,作用是在我们实现某些接口时,省去一些不需要的方法,比如:
interface A{ public void method1(); public void method2(); public void method2();}
有一个接口A,有三个方法,假设,我们有个类C,需要继承A,则必须重写这三个方法,这时候,假设我们值真正使用到的只有method1,那么另外两个方法的代码就显得冗余了,这时候可以使用缺省适配器。
class B implement A{ public void method1(){} public void method2(){} public void method2(){}}
那么,我们的类C,只需要继承B,然后重写我们需要的方法即可
class C extends B { public void method1(){ ... }}
- Java设计模式(5)--适配器模式
- Java设计模式 - Adapter(适配器模式)
- java设计模式(简例)----适配器模式
- java设计模式(八) 适配器模式
- java设计模式(五)---适配器模式
- Java设计模式---适配器模式(Adapter)
- java设计模式(六)--适配器模式
- Java设计模式(六)----适配器模式
- Java设计模式(八) 适配器模式
- Java设计模式--适配器(Adapter)模式
- 设计模式之适配器模式(Java)
- Java设计模式(适配器模式)
- JAVA设计模式-适配器模式(Adapter)
- Java设计模式(八) 适配器模式
- java设计模式--适配器模式(Adapter)
- Java 适配器设计模式
- 适配器(JAVA设计模式)
- java 适配器设计模式
- 图像处理算法(一)---图像常用格式
- Libsvm和Liblinear各自特点和使用经验
- 序列化与反序列化
- ZOJ 3488Conic Section
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- Java设计模式(5)--适配器模式
- UML 九种图
- 编写Android中的蓝牙模块驱动和底层HART设备
- ZOJ 3489Old Labels
- tslib库的安装和基于触摸屏的应用程序开发基础
- Servlet单例多线程问题
- SpringMVC几种重定向以及携带参数的处理
- RocketMQ源码学习--消息存储篇
- 数据结构与算法分析C语言描述-1.1