房貸之銀行選擇

import UIKit

protocol Bank{
    func acceptVisit()->Void
    func review()->Void
    func signContract()->Void
}

extension Bank{
    func acceptVisit()->Void{
        print("\(self)接受資訊")
    }
    func review() {
        print("\(self)審核i資料")
    }
    func signContract() {
        print("\(self)指導簽約")
    }
}
class BankOfICBC : Bank, CustomDebugStringConvertible, CustomStringConvertible{

    var debugDescription: String{
        return "DEBUG:"+description
    }
    var description: String{
        return "ICBC:"
    }
    func review() {
       print("對不起ICBC目前不支持您的申請")
    }
}
class BankOfABC: Bank , CustomStringConvertible, CustomDebugStringConvertible{
    var description: String{
        return "ABC:"
    }
    var debugDescription: String{
        return "DEBUG:" + description
    }
    func review() {
        print("\(self)需要您提供一份特殊資料")
    }
  
}

class BankOfCCB : Bank, CustomStringConvertible, CustomDebugStringConvertible{
    var description: String{
        return "CCB:"
    }
    var debugDescription: String{
        return "DEGBU:"
    }
}
enum BankEnum{
    case ICBC
    case ABC
    case CCB
}
class BackFactory{
    class func chose( _ bank: BankEnum = BankEnum.ICBC )->Bank{
        switch bank {
        case .ABC:
           return BankOfABC.init()
        case .ICBC:
            return BankOfICBC.init()
        case .CCB:
            return BankOfCCB.init()
        default:
            return BankOfICBC.init()
        }
    }
}
func test(_ bank:Bank)->Void{
    bank.acceptVisit()
    bank.review()
    bank.signContract()
}
var bank: Bank = BackFactory.chose(BankEnum.ABC)
test(bank)
print("\n換個銀行試試\n")
bank = BackFactory.chose(BankEnum.ICBC)
test(bank)

test(BackFactory.chose(BankEnum.CCB))


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容