`
kennethf6986
  • 浏览: 69280 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Adapter适配器模式的理解

阅读更多
     Adapter适配器模式是一种结构型模式,主要应对:由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是,新环境要求的接口是现存对象所不满足的。

     《设计模式》中说道:将一个类的接口转换成客户端程序希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。

     下面列举一个具体的应用场景(摘录自Thinking In Java)

     我们知道,如果要使一个类能用于foreach语法,可以让这个类实现Iterable接口。假如有一个Iterable类,你想添加一种或者多种在foreach语句中使用这个类的方法,应该如何做呢?例如,假设你希望可以选择以向前的方向或者向后的方向迭代一个单词列表。如果直接继承这个类,并覆盖iterator()方法,你只能替代现有的方法,而不能实现选择。

     当你有一个接口并需要另一个接口时,编写适配器就可以解决问题。这里,我希望在默认的前向迭代器的基础上,添加反向迭代器的能力,因此不能使用覆盖,而是添加了一个能够产生Iterable对象的方法,该对象可以用于foreach语句,这使得我们可以提供多种使用foreach的方式:

代码如下:

class ReverisbleArrayList<T> extends ArrayList<T> {  
    public ReverisbleArrayList(Collection<T> c) {super(c);}  
    public Iterable<T> reverse() {  
        return new Iterable<T>() { //实现iterable接口的 匿名内部类  
  
            @Override  
            public Iterator<T> iterator() {  
                return new Iterator<T>() {  
                    int current = size() - 1;  
                    @Override  
                    public boolean hasNext() {  
                        return current > -1;  
                    }  
  
                    @Override  
                    public T next() {  
                        return get(current--);  
                    }  
  
                    @Override  
                    public void remove() {  
                    }  
                };  
            }  
        };  
    }  
}  
  
public class AdapterMethodIdiom {  
    public static void main(String[] args) {  
        ReverisbleArrayList<String> ral =   
            new ReverisbleArrayList<String>(  
            Arrays.asList("asm c c++ java c# python".split(" "))  
        );   
          
        for(String s : ral)  
            System.out.print(s + " ");  
        System.out.println();  
          
        for(String s : ral.reverse())  
            System.out.print(s + " ");  
    }  
}
分享到:
评论

相关推荐

    java 汽车适配器(Adapter适配器模式)

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式被广泛应用于解决系统间的兼容性问题,尤其是当我们需要将一个...理解并熟练运用适配器模式,对于提升Java开发能力至关重要。

    Adapter(适配器模式)

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,当系统中存在已有的类或库,而我们...通过阅读和分析这些代码,我们可以更深入地理解适配器模式的工作原理及其在实际项目中的应用。

    C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) (Level 300)

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。...通过理解适配器模式的基本原理和实现方式,开发者可以更有效地整合不同的组件和系统,实现灵活的设计。

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演...在实际项目中,理解并恰当运用适配器模式,对于解决接口兼容问题、降低耦合度具有重要意义。

    设计模式之适配器模式Java实现和类设计图

    首先,我们来理解适配器模式的基本概念。适配器模式就像现实生活中的电源适配器,它的作用是将不同规格的电源转化为设备可以接受的格式。在软件设计中,适配器模式用于将一个类的接口转换成客户端期望的另一个接口,...

    设计模式——适配器模式(adapter)

    适配器模式(Adapter Pattern)是软件设计模式中的一种,其主要目的是解决系统中的接口不兼容问题,使得原本...同时,提供的`adapter`压缩包文件可能包含示例代码或更详细的解释,帮助你深入理解适配器模式的实现细节。

    [结构型模式] 适配器模式的理解

    文件"适配器模式-概念图.pdf"可能包含了适配器模式的可视化表示,帮助理解各个角色之间的关系。"适配器模式-类图.pdf"则可能展示了适配器模式的UML类图,进一步展示了各类之间的继承和关联关系。 总结来说,适配器...

    设计模式C++学习之适配器模式(Adapter)

    适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们...在C++编程中,理解和熟练运用适配器模式,可以极大地提升代码的复用性和维护性。

    通用的adapter适配器

    本项目“通用的adapter适配器”旨在提供一个适用于ListView和GridView的多功能适配器,简化了开发者在处理列表或网格视图时的数据绑定工作。下面我们将深入探讨这个通用适配器的核心概念、实现方式以及它在实际开发...

    适配器(Adapter)模式

    适配器模式的实现并不复杂,但理解其核心理念和应用场景至关重要。在使用过程中,需要注意避免过度使用适配器,因为过多的适配可能会增加系统的复杂性,降低代码的可读性和可维护性。 总的来说,适配器模式是一种...

    设计模式 - 适配器模式(C++实例)

    通过分析这些示例,可以更深入地理解适配器模式在实际开发中的应用。 适配器模式的应用场景广泛,例如在集成第三方库、兼容旧版API或者在不同编程语言之间进行通信时。它提供了一种优雅的解决方案,使得系统可以...

    java中适配器模式案例

    通过阅读这个文件,可以更深入地理解适配器模式的运作机制。 适配器模式的主要优点包括: - 提高了类的复用性,可以利用现有的类进行功能扩展。 - 提高了系统的灵活性,如果需要添加新的适配器,只需要增加一个新的...

    适配器模式demo源码

    在这个“适配器模式demo源码”中,我们可以深入理解这一模式的实现方式及其应用场景。 适配器模式的核心思想是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以协同工作。...

    适配器模式案例代码

    适配器模式可以通过创建一个Adapter类,实现新的DBConnection2接口,内部持有DBConnection实例,并在Adapter类中转换调用方法,使得客户端可以统一地使用DBConnection2接口。 5. **实现注意事项**: - 适配器的...

    设计模式之适配器模式

    通过阅读博客中的实例代码,我们可以更深入地理解适配器模式的工作原理和具体实现方式,这对于提升软件设计能力非常有帮助。适配器模式不仅可以提高代码的复用性,还能使系统更加灵活,减少因接口不兼容导致的修改...

    Java设计模式之Adapter适配器模式

    Java设计模式之Adapter适配器模式 Java设计模式之Adapter适配器模式是一种结构型设计模式,主要用于解决不同接口之间的不兼容问题,使得原本由于接口不兼容不能一起工作的那些类可以一起工作。Adapter模式的主要...

    设计模式-适配器模式(讲解及其实现代码)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在处理系统集成、遗留代码重用以及...通过理解和熟练应用适配器模式,开发者可以在面临接口不兼容问题时,更加从容地进行系统集成和设计优化。

    适配器模式代码demo

    在本文中,我们将深入探讨适配器模式的概念、结构以及如何通过代码示例(即"Adapter"文件)来实现这一模式。 适配器模式的核心思想是解决系统中已有类的功能与新需求之间的接口不匹配问题。它通过创建一个适配器类...

    设计模式之--适配器模式

    在学习和使用适配器模式时,关键是要理解和把握接口转换的核心思想,以及灵活运用类继承或对象组合来实现适配。在实际项目中,适配器模式常常可以解决许多棘手的接口兼容问题,使我们的代码更加健壮和灵活。

    实验七:适配器模式.rar

    - 适配器模式可能会隐藏原有类的一些特性,使得系统的行为变得难以理解和调试。 在实际编程中,我们应根据具体需求选择合适的适配器模式。通过创建适配器,我们可以使不兼容的组件协同工作,提升系统的灵活性和可...

Global site tag (gtag.js) - Google Analytics