Java设计模式 -- 适配器模式
来源:互联网 发布:mac照片占用空间 编辑:程序博客网 时间:2024/05/16 08:26
适配器模式
什么是适配器模式呢?比如说客户端中需要一个Sort() 函数,它可以实现简单的排序功能,但是这个时候,我们发现我们之前曾经写过这个函数,而且已经打包到一个功能类里,而且该函数的名字为SimpleSort(),这个时候我们肯定不想再去实现一遍,如果能直接使用这个SimpleSort()就在好不过了,适配器就是用来完成这项工作的。
适配器中有三个角色
1.Target类 : 用来定义客户端需要的调用的接口,可以是抽象类,接口或者具体类。
2.Adapter : 适配器类,用来调用另一个接口,主要功能是对Adaptee 和 Target 进行适配。
3.Adaptee : 适配者类,包含着 Target 中需要的接口。
适配器又包含两种不同的模式 :
1.对象适配器模式
public abstract class Target { public abstract void method();}public class Adaptee { public void simpleMethod(){ System.out.println("Methods"); } }public class Adapter extends Target{ private Adaptee mAdaptee; public Adapter(Adaptee adaptee) { this.mAdaptee = adaptee; } @Override public void method() { mAdaptee.simpleMethod(); }}
2.类适配器模式
这个时候Target必须是一个接口,否则将无法使用类适配器模式
public interface Target { public void method();}public class Adapter extends Adaptee implements Target{ @Override public void method() { simpleMethod(); } }
适配器模式还存在两种特殊情况
1.双向适配器模式
如果适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配者类中的方法。但是这个时候我们需要Adaptee 和 Target二者皆为接口,其实这并不难,只不过是在interface中定义方法,具体实现放到子类中去实现即可。
public class Adapter implements Adaptee,Target{ private Target mTarget; private Adaptee mAdaptee; public Adapter(Target target,Adaptee adaptee) { this.mAdaptee = adaptee; this.mTarget = target; } @Override public void method() { mAdaptee.simpleMethod(); } @Override public void simpleMethod() { mTarget.method(); }}
2.缺省适配器模式
缺省适配器模式的意思就是如果一个接口定义了太多的方法,而我们只需要其中一两个方法,我们可以先定义一个抽象类去实现接口,并且为接口中所有的方法提供一个默认的实现,然后我们就可以再定义一个子类去继承该抽象类,这样我们就可以在子类中复写我们想要的方法。
public interface MethodInterface { public void method_one(); public void method_two(); public void method_three(); public void method_four();} public abstract class AbstractMethod implements MethodInterface{ public void method_one(){ } public void method_two(){ } public void method_three(){ } public void method_four(){ }}public class ConcreteMethod extends AbstractMethod{ public void method_one(){ System.out.println("Method one"); }}
0 0
- Java 适配器设计模式
- 适配器(JAVA设计模式)
- java 适配器设计模式
- java设计模式 适配器
- Java适配器设计模式
- java适配器设计模式
- java设计模式-适配器
- java适配器设计模式
- java设计模式----适配器模式
- Java设计模式----适配器模式
- java设计模式适配器模式
- java设计模式--适配器模式
- java设计模式---适配器模式
- java设计模式---适配器模式
- JAVA 设计模式-适配器模式
- Java 设计模式 适配器模式
- Java设计模式-适配器模式
- java设计模式---适配器模式
- 3-29博客
- JAVA.抽象类与接口的几个特点与异同
- OpenCV3.1.0 + contrib编译
- 面试大全3
- 第五周项目3——(1)时间类
- Java设计模式 -- 适配器模式
- C/C++中指针、引用、数组、链表的区别
- Hrbust1658一笔画
- 星号图
- HDU 2063 过山车 (二分匹配 -匈牙利算法)
- hdu 1695 莫比乌斯反演
- uva10128(Queue)
- Leetcode 47. Permutations II
- pat乙级总结