首页 > 数码科技 > 适配器模式(Adapter)_adapter模式

适配器模式(Adapter)_adapter模式

栏目:数码科技

作者:B姐

热度:0

时间:2024-02-20 10:01:36

网上看到不少关于适配器模式的讲解,其中对于适配器模式解释的过于专业,一时不是特别理解适配器模式到底是用来干嘛的,具体的适用场景在哪,其最精髓的地方到底在哪。

本文结合自己的理解,阐述下对适配器模式的看法。

假设系统存在一个现有的类UserInfo:

客户端可以通过如下方式set、get员工基本信息:

有一天,基于某种原因(也许你看着这种取数据的方式不太爽,也许是系统间数据交换的原因等),你需要按照如下接口的方式取数据:

目标员工接口:

那么,现在的问题是,如何将一个既定的类转换成按照目标接口的所期望的行为形式呢?

具体怎样实现呢,可以通过如下方式进行:

从上面的UserAdapter类定义中我们发现,UserAdapter不仅实现了UserInterface接口,同时还继承了UserInfo类。在实现接口的getName()和getTelNumber()方法中,分别调用了UserInfo类中的相应方法并取得结果。由此可以满足需求。在上述定义中,按照UserInterface、UserInfo和UserAdapter在场景中的目的不同,可以具体划分成如下角色:

UserInterface:目标角色——目标接口,系统所期待实现的目标;

UserInfo:源角色——当前已经存在的原有的实现类,即将被适配的类;

UserAdapter:适配器角色——将原有实现装换为目标接口的实现。

简单点说,适配器模式是指: 定义一个类,将一个已经存在的类,转换成目标接口所期望的行为形式

在具体的实现过程中,又可以基于其实现层次是类层次还是对象层次,将其分为类适配器和对象适配器。如上所写的是类适配器。

对象适配器使用组合代替继承,将源角色视为适配器角色的属性:

总体而言:适配器模式是指定义一个适配器类,将一个已经存在的类,转换成目标接口所期望的行为形式。同时,一般来说,基于更多的推荐使用组合而不是继承,因此,对象适配器可能使用更多。

常用设计模式概览:提高程序可维护性和可扩展性的秘密武器?

适配器模式基本介绍:

1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)

2) 适配器模式属于结构型模式

3) 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式

例如,有个A类(里面有个m2方法),有个B类(里面有个m1方法),m2想要调用m1的方法,但是由于一些原因,不能直接调用(有可能参数不合适,或者别的原因,但是方法大同小异),这样可以写一个Adapter类,直接让A类的m2调用adapter就可以了,让Adapter类适配A类和B类,A类通过适配器调用B,B通过适配器调用A.

适配器模式工作原理:

1) 适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容

2) 从用户的角度看不到被适配者,是解耦的

3) 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法

4) 用户收到反馈结果,感觉只是和目标接口交互,如图

一。类适配器模式:

1.类适配器模式介绍

基本介绍:Adapter 类,通过继承 src 类,实现 dst类接口,完成 src->dst 的适配。src是要使用适配器的类,dst是目标,src类通过适配器调用dst

adapter卡用在哪的

设计模式是在软件开发中常用的一种编程技巧,它提供了一种通用的解决方案,以便在面对特定的问题时,能够提高软件的可维护性、可扩展性和可重用性。设计模式是一种经过实践证明并被广泛使用的最佳实践。在本文中,我们将简要介绍常见的设计模式。

一、创建型模式

1、工厂方法模式(Factory Method)

工厂方法模式是一种用于创建对象的设计模式。它定义了一个接口来创建对象,并由子类来实现这个接口,从而创建出不同的对象。这样,我们就可以在不暴露对象创建细节的情况下创建对象。工厂方法模式可以帮助我们解决创建对象时的复杂性。

2、抽象工厂模式(Abstract Factory)

抽象工厂模式是工厂方法模式的一种扩展。它可以帮助我们创建一组相关的对象,而不是单个对象。抽象工厂模式定义了一个抽象工厂接口,具体的工厂实现了这个接口来创建对象。通过使用抽象工厂模式,我们可以将对象的创建过程封装起来,从而让客户端代码更加简单。

3、单例模式(Singleton)

单例模式是一种确保一个类只有一个实例的模式。它通过将类的构造函数私有化来实现。这样,就可以防止通过构造函数创建多个实例。单例模式通常提供一个静态方法来获取类的唯一实例。单例模式可以帮助我们确保全局只有一个实例,并且可以让我们方便地访问这个实例。

4、建造者模式(Builder)

建造者模式是一种用于创建复杂对象的模式。它将对象的构造过程分解成多个步骤,并且允许在每个步骤中使用不同的构造方法。这样,就可以创建出不同的对象。建造者模式可以帮助我们解决创建复杂对象时的复杂性。

5、原型模式(Prototype)

原型模式是一种用于创建对象的模式。它允许我们通过克隆一个现有对象来创建一个新的对象。这样,我们就可以在不知道对象创建细节的情况下创建新的对象。原型模式可以帮助我们提高对象创建的效率。

二、结构型模式

1、适配器模式(Adapter)

适配器模式是一种用于将不兼容接口转换为兼容接口的模式。适配器模式通过包装一个对象来适配不同的接口。这样,就可以让原本不兼容的接口能够相互协作。适配器模式可以帮助我们将旧系统与新系统无缝集成。

2、桥接模式(Bridge)

桥接模式是一种用于将抽象部分与实现部分分离的模式。桥接模式通过将抽象部分与实现部分分离,从而可以让它们能够独立地变化。这样,就可以在不影响其他部分的情况下修改抽象部分或实现部分。

3、组合模式(Composite)

组合模式是一种用于将对象组合成树形结构的模式。组合模式通过将对象组合成树形结构,从而可以让客户端代码以统一的方式处理单个对象和组合对象。组合模式可以帮助我们简化代码结构,从而提高代码的可读性和可维护性。

4、装饰器模式(Decorator)

装饰器模式是一种用于在运行时添加功能的模式。装饰器模式通过将对象包装在另一个对象中,从而可以在运行时动态地添加功能。装饰器模式可以帮助我们将复杂的功能分解成简单的功能,并且可以让我们方便地扩展对象的功能。

5、外观模式(Facade)

外观模式是一种用于简化接口的模式。外观模式通过提供一个简单的接口来隐藏系统的复杂性。这样,就可以让客户端代码更加简单。外观模式可以帮助我们简化代码结构,并且可以提高代码的可读性和可维护性。

6、享元模式(Flyweight)

享元模式是一种用于共享对象的模式。享元模式通过将共享对象的状态分离出来,从而可以让多个对象共享同一个状态。这样,就可以减少对象的数量,从而提高系统的性能。享元模式可以帮助我们优化系统性能,并且可以减少内存使用量。

三、行为型模式

1、职责链模式(Chain of Responsibility)

职责链模式是一种用于处理请求的模式。职责链模式通过将请求沿着一条链传递下去,从而可以让多个对象都有机会处理这个请求。职责链模式可以帮助我们将复杂的业务逻辑分解成简单的逻辑,并且可以让我们方便地扩展处理请求的对象。

2、命令模式(Command)

命令模式是一种用于封装操作的模式。命令模式通过将操作封装成对象,从而可以让我们能够以统一的方式处理不同的操作。命令模式可以帮助我们简化代码结构,并且可以让我们方便地撤销和重做操作。

3、解释器模式(Interpreter)

解释器模式是一种用于处理语言的模式。解释器模式通过将语言分解成语法树,从而可以让我们方便地解析和执行语言。解释器模式可以帮助我们扩展语言的语法和功能,并且可以让我们方便地添加新的语言。

4、迭代器模式(Iterator)

迭代器模式是一种用于访问集合的模式。迭代器模式通过将集合的遍历过程封装成对象,从而可以让客户端代码以统一的方式访问集合中的元素。迭代器模式可以帮助我们简化代码结构,并且可以让我们方便地扩展集合的遍历方式。

5、中介者模式(Mediator)

中介者模式是一种用于处理对象之间的交互的模式。中介者模式通过将对象之间的交互集中在一个中介者对象中,从而可以让对象之间的交互变得更加简单。中介者模式可以帮助我们解耦对象之间的交互,并且可以让我们方便地添加新的对象和交互方式。

6、备忘录模式(Memento)

备忘录模式是一种用于保存对象状态的模式。备忘录模式通过将对象的状态保存在一个备忘录对象中,从而可以让对象在后续操作中恢复到之前的状态。备忘录模式可以帮助我们实现撤销和重做操作,并且可以让我们方便地保存对象的历史状态。

7、观察者模式(Observer)

观察者模式是一种用于处理对象之间的通知的模式。观察者模式通过将对象之间的通知封装成事件,从而可以让对象之间的通知变得更加简单。观察者模式可以帮助我们解耦对象之间的通知,并且可以让我们方便地添加新的对象和通知方式。

8、状态模式(State)

状态模式是一种用于处理对象状态的模式。状态模式通过将对象的状态分解成不同的状态类,从而可以让对象的状态变得更加清晰。状态模式可以帮助我们简化代码结构,并且可以让我们方便地扩展对象的状态。

9、策略模式(Strategy)

策略模式是一种用于处理算法的模式。策略模式通过将算法封装成不同的策略类,从而可以让客户端代码选择不同的算法。策略模式可以帮助我们简化代码结构,并且可以让我们方便地扩展算法。

10、模板方法模式(Template Method)

模板方法模式是一种用于处理算法的模式。模板方法模式通过将算法的骨架定义在抽象基类中,从而可以让子类实现具体的算法细节。模板方法模式可以帮助我们简化代码结构,并且可以让我们方便地扩展算法的骨架和细节。

11、访问者模式(Visitor)

访问者模式是一种用于处理对象结构的模式。访问者模式通过将对象结构和访问操作分离,从而可以让客户端代码以统一的方式访问对象结构中的元素。访问者模式可以帮助我们简化代码结构,并且可以让我们方便地添加新的访问操作和元素类型。

12、享元模式(Flyweight)

像元模式是一种用于处理大量相似对象的模式。享元模式通过共享相同的状态,从而可以让我们节省内存和时间开销。享元模式可以帮助我们提高程序的性能,并且可以让我们方便地添加新的对象类型。

总结:设计模式是一种被广泛使用的软件设计方法,它可以帮助我们简化代码结构、提高程序的可维护性和可扩展性。在本文中,我们介绍了12种常用的设计模式,包括工厂模式、单例模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。

每种设计模式都有自己的特点和用途,我们可以根据不同的情况选择适合的模式来解决问题。虽然设计模式可以帮助我们提高程序的质量和效率,但是过度使用设计模式也会带来一些问题,例如增加代码的复杂性和维护成本。因此,在使用设计模式时,我们应该权衡利弊,根据实际情况作出选择。

java中都有哪些设计模式?

adapter卡用在一般由外壳、电源变压器和整流电路组成。

按其输出类型可分为交流输出型和直流输出型;按连接方式可分为插墙式和桌面式。移动PC由于电池容量有限,电源适配器对其尤为重要。

Micro SD卡是一种极细小的快闪存储器卡,其格式源自SanDisk创造,原本这种记忆卡称为T-Flash,及后改称为Trans Flash;而重新命名为Micro SD的原因是因为被SD协会 (SDA) 采立。另一些被SDA采立的记忆卡包括Mini SD和SD卡。

适配模式:

在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

适配器模式主要应用于,当接口里定义的方法无法满足客户的需求,或者说接口里定义的方法的名称或者方法界面与客户需求有冲突的情况。

两类模式:对象适配器模式 - 在这种适配器模式中,适配器容纳一个它我包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。类适配器模式 - 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。

抽取方法,抽取接口,用到了哪些设计模式

大致有23种

都是表示类与类之间的构架关系 也就是表示对象的逻辑关系

设计模式根据使用类型可以分为三种:

1、 创建模式:工厂模式、单子模式、建造者模式、原型模式、工厂方法模式。

2、 结构模式:外观模式、代理模式、适配器模式、组合模式、装饰模式、桥模式、

共享模式。

3、 行为模式:模板模式、纪念品模式、观察者模式、责任链模式、命令模式、声明模式、

策略模式、中介模式、解释器模式、访问模式

说白了模式就是前人经过大量的实践,总结出来的优化的对象关系 你也可以自己总结出来

设计模式列表基础模式委托模式接口模式代理模式创建型模式抽象工厂模式(AbstractFactory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。生成器模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。工厂方法模式(FactoryMethord),定义一个用于创建对象的接口,让子类决定将哪一个类实例化。FactoryMethod使一个类的实例化延迟到其子类。原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。结构型模式适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。容器模式修饰模式(Decorator),动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。扩展性模式外观模式享元模式管道与过滤器模式代理模式(Proxy),为其他对象提供一个代理以控制对这个对象的访问。行为模式责任链模式(ChainofResponsibility),为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。柯里化模式事件监听器模式解释器模式迭代器模式中介者模式备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。观察者模式(Observer),定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。状态模式(State),允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。策略模式(Strategy),定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。模板方法模式访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。层次访问者模式并发模式模式Actionatadistance模式Balking模式Guardedsuspension模式Scheduler模式Readwritelock模式Doublecheckedlocking模式Disablejobrequestswhilerunningjob实时模式模式Scheduledtask模式Userinterface模式Disablejobrequestswhilerunningjob其他模型—视图—控制器模式

适配器模式(Adapter)_adapter模式