MST

星途 面试题库

面试题:Swift中如何初步实现装饰器模式与协议扩展结合

请简述在Swift中,如何将装饰器模式与协议扩展相结合,以实现对某个类型功能的增强。请给出一个简单的示例代码,例如对一个`Shape`协议,通过装饰器模式和协议扩展为其添加绘制边框的功能。
46.7万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
  1. 定义Shape协议
protocol Shape {
    func draw()
}
  1. 定义装饰器协议扩展
extension Shape {
    func drawWithBorder() {
        draw()
        print("Drawing border around the shape.")
    }
}
  1. 实现具体的Shape类型
struct Circle: Shape {
    func draw() {
        print("Drawing a circle.")
    }
}
  1. 使用示例
let circle = Circle()
circle.draw()
circle.drawWithBorder()

在上述代码中,首先定义了Shape协议,它有一个draw方法用于绘制形状。然后通过协议扩展为Shape协议添加了drawWithBorder方法,该方法在调用原draw方法后,打印出绘制边框的信息。接着定义了Circle结构体遵循Shape协议。最后创建Circle实例,并分别调用draw方法和通过协议扩展添加的drawWithBorder方法,展示装饰器模式与协议扩展结合为类型增强功能的效果。