2015/11/10

swift 物件導向觀念

import UIKit

//程式碼複製

class A11{
    func doo(){
        print("A")
        print("A")
        print("A")
        
        print("B")
        print("B")
        print("B")
    }
}

class A12{
    func doo(){
        print("A")
        print("A")
        print("A")
        
        print("C")
        print("C")
        print("C")
    }
}



// 包裝重複
class StaticOrSingleton{
    class func AAA(){
        print("A")
        print("A")
        print("A")
    }
}

class A21{
    func doo(){
        StaticOrSingleton.AAA()
        print("B")
        print("B")
        print("B")
    }
}

class A22{
    func doo(){
        StaticOrSingleton.AAA()
        print("C")
        print("C")
        print("C")
    }
}


// 包裝不同 by 繼承

class A31{
    func doo(){
        StaticOrSingleton.AAA()
        bbb()
    }
    func bbb(){
        print("B")
        print("B")
        print("B")
    }
}

class A32:A31{
    override func bbb(){
        print("C")
        print("C")
        print("C")
    }
}


// 包裝不同 by 繼承2
class A40{
    func doo(){
        StaticOrSingleton.AAA()
        bbb()
    }
    func bbb(){}
}

class A41:A40{
    override func bbb(){
        print("B")
        print("B")
        print("B")
    }
}

class A42:A40{
    override func bbb(){
        print("C")
        print("C")
        print("C")
    }
}



// 包裝不同 by 委派
protocol B{
    func bbb()
}

class B1:B{
    func bbb(){
        print("B")
        print("B")
        print("B")
    }
}

class B2:B{
    func bbb(){
        print("C")
        print("C")
        print("C")
    }
}

class A6{
    var b:B
    init(b:B){
        self.b = b
    }
    func doo(){
        StaticOrSingleton.AAA()
        b.bbb()
    }
}

A6(b: B1()).doo()
A6(b: B2()).doo()


// 包裝不同 by 函數變數
class A7{
    var b:()->()
    init(b:()->()){
        self.b = b
    }
    func doo(){
        StaticOrSingleton.AAA()
        b()
    }
}

A7(b: {
    print("B")
    print("B")
    print("B")
}).doo()
A7(b: {
    print("C")
    print("C")
    print("C")
}).doo()





沒有留言: