swift自制工厂模式


import Foundation

//基本单位

class CommonBean:NSObject{

    required override init() {

        super.init()

    }

}

class Service:CommonBean{

    func getUID(){

        print("uid")

    }

}

class UserService:Service{

    func getUser(){

        print("getuser")

    }

}



//工厂类

class Factory{

    static var beans:[String:CommonBean]=[:]//此处用于储存已创建的对象

    static func getBean<T:CommonBean>(t:T?)->T{

        if let bean = beans["\(T.classForCoder())"]{//如果对象不存在,则新增,并存到对象字典里

            return bean as! T

        }else{

            let tt=T()

            beans["\(T.classForCoder())"]=tt

            return tt

        }

    }

    static func printBeans(){

        print(beans)

    }

}


var us:UserService?=nil

us=Factory.getBean(us)

var us2:UserService?=nil

us2=Factory.getBean(us2)

us?.getUser()

us2?.getUser()

//测试结果,usus2为同一个对象


Factory.printBeans()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值