装饰器— Swift中的设计模式

装饰器设计模式使我们能够动态地向对象添加功能和行为,而不会影响同一类中其他现有对象的行为。 我们使用继承来扩展类的行为。

零件:

  协议 iPhoneX { 
func price()-> Double
}

具体组成部分:

  IPhoneXsBasic  :iPhoneXs { 
func price()-> Double {
749章
}
}

装饰器:

  IPhoneXsDecoreate  :iPhoneXs { 
私人 var电话:iPhoneXs
初始化 (电话:iPhoneXs){
自我 .phone =电话
}
  func price()-> Double { 
返回 自身 .phone.price()
}
}

混凝土装饰工:

  IphoneXsRam128  :iPhoneXsDecoreate { 
覆盖 func price()-> Double {
返回 超级 .price()+ 50
}
}
  IphoneXsRam256  :iPhoneXsDecoreate { 
覆盖 func price()-> Double {
返回 超级 .price()+ 150
}
}
  iPhoneXsGoldCover  :iPhoneXsDecoreate { 
覆盖 func price()-> Double {
返回 超级 .price()+ 1000
}
}

用法:

   myPhone = IPhoneXsBasic() 
  print(“ $” + String(myPhone.price())) // $ 749 
   mySonPhone = IphoneXsRam128(电话:IPhoneXsBasic()) 
  print(“ $” + String(mySonPhone.price())) //$799.0 
   myWifePhone = iPhoneXsGoldCover(电话:IphoneXsRam256(电话:IPhoneXsBasic())) 
  print(“ $” + String(myWifePhone.price())) //$1899.0 

改善并继续

您可以考虑创建许多具体组件,例如:IphoneXrBasic,IphoneXBasic等。