iOS设计模式-装饰模式- Swift

2019-03-01  本文已影响0人  velue

装饰模式

角色一:抽象组件->MobilePhone(手机)


//
//  MobilePhone.swift
//  装饰模式-Swift
//

import Foundation

//角色一:抽象组件->MobilePhone(手机)
protocol MobilePhone {
    
    func shell()
}

角色二:具体组件->iPhoneX

//
//  iPhoneX.swift
//  装饰模式-Swift
//


import UIKit

//角色二:具体组件->iPhoneX
class iPhoneX: MobilePhone {

    func shell() {
        print("iPhone")
    }
}

角色三:抽象装饰者->MobilePhoneShell

//
//  MobilePhoneShell.swift
//  装饰模式-Swift


import UIKit

//角色三:抽象装饰者->MobilePhoneShell
//特点一:继承(实现)抽象组件
//特点二:持有抽象组件引用
class MobilePhoneShell:MobilePhone {
    
    private var mobile:MobilePhone
    
    init(mobile:MobilePhone) {
        self.mobile = mobile
    }
    
    func shell() {
        self.mobile.shell()
    }
}

角色四:具体装饰者

//
//  GoodShell.swift
//  装饰模式-Swift


import UIKit


//角色四:具体装饰者
class GoodShell: MobilePhoneShell {

    override init(mobile: MobilePhone) {
        super.init(mobile: mobile)
    }
    
    func wearproof() {
        print("耐磨功能")
    }
    
    func waterproof() {
        print("防水功能")
    }
    
    func dustproof() {
        print("防尘功能")
    }
}

具体装饰者

//
//  PoorShell.swift
//  装饰模式-Swift


import UIKit

//具体装饰者
class PoorShell: MobilePhoneShell {

    override init(mobile: MobilePhone) {
        super.init(mobile: mobile)
    }
    
    func wearproof() {
        print("耐磨功能")
    }
}

调用实现:

        let phone = iPhoneX()
        phone.shell()
        
        //好的装饰
        let good = GoodShell(mobile: phone)
        good.shell()//对象
        good.dustproof()
        good.waterproof()
        good.wearproof()
        
        //坏的装饰
        let poor = PoorShell(mobile: phone)
        poor.shell()//对象
        poor.wearproof()


上一篇下一篇

猜你喜欢

热点阅读