装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
装饰(Decorator)模式的主要优点有:
• 采用装饰模式扩展对象的功能比采用继承方式更加灵活。
• 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。
其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。
protocol CarProtocol {
func printInfo()
}
class Car: CarProtocol {
func printInfo() {
print("我是宝马")
}
}
class DecoratorCar: CarProtocol {
var car: Car
init(car : Car) {
self.car = car
}
func printInfo() {
// 装饰的内容
print("给车喷漆")
self.car.printInfo()
}
}
let decoratorCar = DecoratorCar(car: Car())
decoratorCar.printInfo()
//给车喷漆
//我是宝马