Swift设计模式----装饰器模式
2020-04-29 本文已影响0人
青山不改
装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。
装饰器模式在别的语言里搞的云里雾里,在swift里就很简单,因为swift有extension和protocol extension,可以很轻松的给已有对象添加功能。protocol extension可以给协议添加默认实现,这让协议甚至可以代替继承,所以swift变成所谓的面向协议编程的语言。
class Student: NSObject {
//座右铭
func maxim(){
print("我是个学生,我每天都要学习,我要为自己代言")
}
}
extension Student{
func examine() {
self.maxim()
print("考试分数出来了,我考100分,我是个好学生")
}
}
extension Student{
func studyHard(){
self.examine()
print("上次没考好,被当成了坏学生,现在我要好好学习,下次考一百分")
}
}
我们有个学生类,只有一个maxim方法,现在我们通过extension给他扩展两个方法examine、studyHard,这样装饰以后,学生类的功能就更丰富了。‘
协议扩展让协议可以有一个默认实现,这样遵守这个协议的类都可以有默认功能:
protocol Student {
func maxim()
}
extension Student{
func maxim() {
print("我是个学生,我每天都要学习,我要为自己代言")
}
}
class GoodStudent: Student {
func studyHard() {
self.maxim()
print("考试分数出来了,我考100分,我是个好学生")
}
}
这样就算GoodStudent不实现maxim方法,它也会有这样的功能,可以不使用继承达到复用代码的目的。