目录

一、适配器模式

二、实现

三、优缺点

四、适用环境

五、小结


一、适配器模式

适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作(结构型)。

适配器模式角色如下:

  • 目标抽象类:目标抽象类定义客户所需要的接口;
  • 适配器类:调用另一个接口,作为一个转换器,对适配者和目标抽象类进行适配;
  • 适配者类:适配者是被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类是具体类。

二、实现

在src目录下,新建一个adapter文件夹,在该文件夹下新建一个adapter.cj文件和adapter.drawio文件。

类图

核心代码

package DesignPattern.adapter

// 电源接口
public abstract class PowerInterface {
    protected var v: Int64 = 0
    public func setV(): Unit
}

// 目标类
public class Computer {
    public Computer(private let powerInterface: PowerInterface){}

    public func showV() {
        println("电脑电压为: ${this.powerInterface.v}")
    }
}

// 适配者
public class Power {
    private var v: Int64 = 220

    public func get220V() {
        return this.v
    }
}

// 适配器
public class PowerAdapter <: PowerInterface {
    public PowerAdapter(private let power: Power) {}

    public override func setV() {
        // 获取电源电压
        var v = this.power.get220V()
        // 进行电压转换
        v = v / 11
        // 电压提供给电脑
        super.v = v
    }
}

测试代码

package DesignPattern
import DesignPattern.adapter.*

 
main(): Int64 {
    // 电源
    let power = Power()
    // 电源适配器
    let powerAdapter = PowerAdapter(power)
    // 电源转换
    powerAdapter.setV()
    // 电脑接上适配器
    let computer = Computer(powerAdapter)
    computer.showV()

    return 0
}

三、优缺点

优点:

  • 将目标类和适配者类解耦,通过引入适配器来重用现有的适配者,无需修改原有的代码;
  • 增加了类的复用性和透明性,提高了适配者的复用性;
  • 不仅可以适配适配者,还可以适配适配者的子类,符合里氏替换原则。

缺点:

  • 仓颉是单继承语言,一次最多只能适配一个适配者类,适用具有局限性。

四、适用环境

  • 系统需要适用一些现有的类,但这些类的接口(方法)不符合系统的需要,甚至是没有这类的源码。

五、小结

本章为大家详细的介绍了仓颉设计模式中适配器模式的内容,下一章,为大家带来适配器模式练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐