Swift装饰者模式
来源:互联网 发布:怎样修改mac地址 编辑:程序博客网 时间:2024/06/14 09:46
本文和大家分享的主要是swift装饰者模式相关内容,一起来看看吧,希望对大家学习swift有所帮助。
装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,例如生活中常用的生日蛋糕,可以添加蓝莓,巧克力来装饰,可以动态地给一个对象添加额外的职责.
装饰者模式.jpg
Cake类:
class Cake {
func cakeTypeName() -> String { return "" }
func make() { }
}
class BirthdayCake: Cake {
override func cakeTypeName() -> String {
return "生日"
}
override func make() {
let name = cakeTypeName()
print("\\(name)---蛋糕制作成功")
}
}
装饰者对象:
class FruitsDecorator: Cake {
var cake:Cake?
convenience init(cake:Cake) {
self.init()
self.cake = cake
}
override func cakeTypeName() -> String {
return "水果"
}
override func make() {
let name = cakeTypeName()
print("\\(name)---蛋糕制作成功")
}
}
class ChocolateDecorator: FruitsDecorator {
convenience init(cake:Cake) {
self.init()
self.cake = cake
}
override func cakeTypeName() -> String {
let name:String = "巧克力" + self.cake!.cakeTypeName()
return name
}
}
class BlueberryDecorator: FruitsDecorator {
convenience init(cake:Cake) {
self.init()
self.cake = cake
}
override func cakeTypeName() -> String {
let name:String = "蓝莓" + self.cake!.cakeTypeName()
return name
}
}
测试代码:
let cake:Cake = BirthdayCake()
cake.make()
let cake2:Cake = ChocolateDecorator(cake: cake)
cake2.make()
let cake3:Cake = BlueberryDecorator(cake: cake)
cake3.make()
let cake4:Cake = BlueberryDecorator(cake: cake2)
cake4.make()
print("FlyElephant")
通过例子中可以看到装饰者和被装饰者有相同的方法,有以下几个有点:
① 装饰者模式在不改变原对象的情况下,为类添加了新的功能.
② 装饰者模式可以通过新增的功能进行排列组合生成不同的类,有很好的扩展性.
装饰者模式最大的缺点会因为过度设计生成各种各样功能相似的小类.
来源:简书
- Swift装饰者模式
- Swift设计模式之装饰模式
- swift设计模式学习 - 装饰模式
- 装饰者模式(Derector)
- 装饰者模式
- Decorator 装饰者模式
- 装饰者设计模式
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式(Decorator)
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式 DecoratorPattern
- 设计模式 - 装饰者
- 装饰者模式
- 装饰者模式
- python---pickle使用
- 关于公式对齐的排版
- weex采坑之旅(一)初识weex
- 在js中怎样获得checkbox里选中的多个值?
- XWPFDocument读取word并修改发送
- Swift装饰者模式
- EIGRP协议配置
- mysql 替换字符串
- [项目实训]6.8 contest的add功能最终完成
- php 字符串压缩
- 从高考到程序员
- 放在HTML里的哪一部分JavaScripts会在页面加载时被执行?
- 一步一步学ROP之Android ARM 32位篇 -- 阅读笔记及实践
- JavaScript对Json的增删改属性