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))
网友评论