Swift委託代理實現

import Foundation

//協議
protocol  Print {
    var name: String {set get}
    init(name: String)
    func printContents(content:String) -> Void

}
//協議繼承
protocol Show:Print {
    func show() -> Void
}

struct LenovePrinter: Print {
    var name: String = ""
    init(name: String) {
        self.name = name
    }
    func printContents(content:String) -> Void {
        print("愛普生打印內容:\(content)")
        print("++++++++++++++++++++++++++++")
        print(content)
        print("++++++++++++++++++++++++++++")
    }
}

//代理類
class HPPrinter: Show {
    func show() {
        print("*******")
    }
    var name: String = ""
    required init(name: String) {
        self.name = name
    }
    func printContents(content:String) -> Void {
        print("HP打印內容:\(content)")
        print("----------------------------")
        print(content)
        print("----------------------------")
    }
}
//代理類
class EsponPrinter: Print {
    var name: String = ""
    required init(name: String) {
        self.name = name
    }
}
//在延展中實現協議中沒有實現的方法
extension EsponPrinter {
    func printContents(content:String) -> Void {
        print("愛普生打印內容:\(content)")
        print("++++++++++++++++++++++++++++")
        print(content)
        print("++++++++++++++++++++++++++++")
    }
}
//委託類
class Computer {
    func showMessage(printer:Print,content: String) -> Void {
        printer.printContents(content: content)
    }
}


var hpPrinter = HPPrinter(name:"3337")
var esponPrinter = EsponPrinter(name:"1005")

//協議數組
var arr:[Print] = [hpPrinter,esponPrinter]


var computer = Computer()

computer.showMessage(printer:esponPrinter,content:"久久鴨脖")
computer.showMessage(printer:hpPrinter,content:"久久鴨脖")


protocol P1 {
    func kkk() -> Void
}
protocol Maaa:class,P1 {
    func sss() -> Void
}

class TestOne: Maaa {
    func sss() {
    }
    func kkk() {
    }
}
//struct Test: Maaa {
//    func sss() {
//    }
//    func kkk() {
//    }
//}


發佈了57 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章