适配器模式

来源:互联网 发布:主板稳定性测试软件 编辑:程序博客网 时间:2024/05/28 15:08

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。

这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

优点: 1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。

缺点: 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现

     2由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

使用场景:有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。

注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。


1.缺省适配器

缺省适配(Default Adapter)模式为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。作为适配器模式的一个特例,

缺省是适配模式在JAVA语言中有着特殊的应用

在很多情况下,必须让一个具体类实现某一个接口,但是这个类又用不到接口所规定的所有的方法。通常的处理方法是,这个具体类要实现所有的方法,那些有用的方法要有

实现,那些没有用的方法也要有空实现。

这些空的方法是一种浪费,有时也是一种混乱。除非看过这些空方法的代码,程序员可能会以为这些方法不是空的。

缺省适配模式可以很好的处理这一情况。可以设计一个抽象的适配器类实现接口,此抽象类要给接口所要求的每一种方法都提供一个空的方法。


如下:

public interface Person {    void eat();    void sleep();    void play();}public abstract class PersonAdapter implements Person {    @Override    public void eat() {    }    @Override    public void sleep() {    }    @Override    public void play() {    }}public class ET extends PersonAdapter {    @Override    public void play() {        System.out.println("我是机器人不吃饭不睡觉");    }

}

2.类适配器

类适配器使用对象继承的方式,是静态的定义方式

3.对象适配器








原创粉丝点击