结构型模式1.适配器模式

打印 上一主题 下一主题

主题 870|帖子 870|积分 2610

结构型模式


  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)
适配器模式(Adapter Pattern)是一种结构型设计模式,它通过将一个类的接口转换成客户端所盼望的另一个接口,从而使得本来由于接口不兼容而不能一起工作的类可以或许协同工作。适配器模式的目标是将接口不兼容的类连接起来,使得它们可以或许正常工作。
关键概念



  • 目标接口(Target):客户端希望使用的接口,是适配器模式的目标。
  • 适配者接口(Adaptee):需要适配的现有接口,客户端无法直接使用的接口。
  • 适配器(Adapter):实现目标接口,而且持有一个适配者对象,通过适配器将适配者的接口转换为目标接口,使得客户端可以正常调用。
类图

适配器模式的类图通常会包含三个主要脚色:

  • Client(客户端):使用目标接口与适配器交互。
  • Target(目标接口):客户端所盼望的接口。
  • Adapter(适配器):适配器类,负责将适配者的接口转换为目标接口。
  • Adaptee(适配者):被适配的类,客户端本来不能直接使用的接口。
适配器模式(Adapter Pattern)是一种结构型设计模式,它通过将一个类的接口转换成客户端所盼望的另一个接口,从而使得本来由于接口不兼容而不能一起工作的类可以或许协同工作。适配器模式的目标是将接口不兼容的类连接起来,使得它们可以或许正常工作。
关键概念



  • 目标接口(Target):客户端希望使用的接口,是适配器模式的目标。
  • 适配者接口(Adaptee):需要适配的现有接口,客户端无法直接使用的接口。
  • 适配器(Adapter):实现目标接口,而且持有一个适配者对象,通过适配器将适配者的接口转换为目标接口,使得客户端可以正常调用。
类图

适配器模式的类图通常会包含三个主要脚色:

  • Client(客户端):使用目标接口与适配器交互。
  • Target(目标接口):客户端所盼望的接口。
  • Adapter(适配器):适配器类,负责将适配者的接口转换为目标接口。
  • Adaptee(适配者):被适配的类,客户端本来不能直接使用的接口。
举个例子:电源适配器

假设我们有两个设备,一个是国内电压的设备(220V),另一个是国外电压的设备(110V)。为了让这两个设备都能使用同一个插座,我们需要一个电源适配器来转换电压。
 
 
  1. // 目标接口,表示标准的电源接口,期望输出 220V
  2. interface PowerOutlet {
  3.     int providePower();
  4. }
  5. // 被适配者,一个提供 110V 电压的电源类
  6. class USPowerSource {
  7.     public int provide110V() {
  8.         return 110;
  9.     }
  10. }
  11. // 适配器类,将 110V 电源适配到 220V 电源接口
  12. class PowerAdapter implements PowerOutlet {
  13.     private USPowerSource usPowerSource;
  14.     public PowerAdapter(USPowerSource usPowerSource) {
  15.         this.usPowerSource = usPowerSource;
  16.     }
  17.     @Override
  18.     public int providePower() {
  19.         // 从 110V 电源获取电压,并将其转换为 220V
  20.         int voltage = usPowerSource.provide110V();
  21.         // 这里进行电压转换,简单示例为乘以 2 得到近似 220V
  22.         return voltage * 2;
  23.     }
  24. }
  25. // 客户端类,使用标准电源接口
  26. class Client {
  27.     public static void main(String[] args) {
  28.         USPowerSource usPowerSource = new USPowerSource();
  29.         // 创建适配器,并将 110V 电源源作为参数传递给适配器
  30.         PowerAdapter powerAdapter = new PowerAdapter(usPowerSource);
  31.         // 通过适配器获取 220V 电源
  32.         int voltage = powerAdapter.providePower();
  33.         System.out.println("The provided voltage is: " + voltage + "V");
  34.     }
  35. }
复制代码
适配器模式的应用场景

适配器模式的应用场景主要有以下几种:

  • 现有类库的复用:当需要将一个已有类库与一个新的体系或接口举行集成时,如果它们的接口不兼容,可以使用适配器模式来适配现有的类库接口,使其符合新的体系接口。
  • 第三方库的适配:当使用第三方库时,大概会遇到接口不符合当前应用步调的需求,适配器模式可以资助办理接口不兼容的问题,使得第三方库可以或许在当前应用中正常工作。
  • 需要兼容多个接口:当一个类需要适配多个不同的接口时,可以使用适配器模式创建多个适配器,确保类可以或许与不同接口的组件举行交互。
优点


  • 解耦:客户端与适配者解耦,客户端只需与目标接口交互,而不需要知道适配者的具体实现。
  • 重用现有代码:通过适配器模式,可以将已经存在的类与新的体系或需求举行兼容,制止重新实现已有功能。
  • 机动性:可以或许将不兼容的接口通过适配器连接起来,使得体系的扩展更加机动。
缺点


  • 增加代码复杂性:引入适配器会使代码增加条理,大概使得代码变得更加复杂。
  • 性能开销:在某些环境下,适配器模式大概会带来肯定的性能开销,尤其是涉及到多层适配时。
总结

适配器模式是非常实用的设计模式,尤其在需要处理接口不兼容的环境时。它可以或许有效地解耦体系中的不同部分,使得体系更加机动且易于扩展。适配器模式尤其适用于需要兼容多个接口或将现有类库与新体系举行集成的场景。
 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表