swift设计模式学习二
来源:互联网 发布:网络诈骗如何举报网站 编辑:程序博客网 时间:2024/06/03 22:51
今天看的代理模式,这个模式使用率很高,它有两个主要特点,1.真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事物。2.具体主题角色是随时都会发生变化的,只要它实现了接口,不管如何变化,都无法逃过接口掌控,我们的代理类完全可以不做任何修改的情况下使用
在IOS中,在使用tableview,scrollview等控件的时候,苹果要求实现其代理,就是使用的这个模式
代理模式的简单定义
import Foundationclass Subject : NSObject { func request() { }}import Foundationclass RealSubject: Subject { override func request() { //具体实现 }}import Foundationclass Proxy: Subject { var subject: Subject? init(Obj:Subject) { self.subject = Obj } func before() { //预处理 } func after() { //善后处理 } override func request() { self.before() self.subject?.request() self.after() }}
代理模式有两个扩展,一普通代理,二强制代理
普通代理:(下面举个例子,它的要求就是客户端只能访问代理角色,而不能访问真实角色)
import Foundationclass VirtualGamePlayer: NSObject { func login(User:String, Password:String) { } func killBoss() { } func upgrade() { }}import Foundationclass GamePlayer: VirtualGamePlayer { var name:String = "" init(gameplayer:VirtualGamePlayer?,Name:String) { super.init() if gameplayer == nil { print("真实角色为空") }else { self.name = Name } } override func killBoss() { print("\(self.name)+打怪!") } override func login(User: String, Password: String) { print("\(User)+\(Password)") } override func upgrade() { print("\(self.name)升级了") }}import Foundationclass GamePlayerProxy: VirtualGamePlayer { var gameplayer:VirtualGamePlayer? init(gpName:String) { super.init() gameplayer = GamePlayer(gameplayer: self,Name: gpName) } override func killBoss() { self.gameplayer?.killBoss() } override func login(User: String, Password: String) { self.gameplayer?.login(User, Password: Password) } override func upgrade() { self.gameplayer?.upgrade() }}//main函数let gmProxy:GamePlayerProxy = GamePlayerProxy(gpName: "里斯")gmProxy.login("lisi", Password: "123")gmProxy.killBoss()gmProxy.upgrade()
强制代理模式 明天再整理
0 0
- swift设计模式学习二
- swift设计模式学习
- swift设计模式学习
- swift设计模式学习
- swift设计模式学习一
- Swift中的iOS设计模式(二)
- swift设计模式学习 - 装饰模式
- swift设计模式学习 - 策略模式
- swift设计模式学习 - 原型模式
- swift 设计模式入门级项目学习
- 设计模式学习笔记(二)
- 设计模式学习(二)
- 设计模式学习(二)
- 设计模式学习前奏二
- [boolan]设计模式学习二
- 设计模式学习(二)
- 设计模式学习系列二:工厂模式
- 设计模式学习(二):工厂模式
- 【SSH】Java之静态代理和动态代理
- Holding Bin-Laden Captive! hdoj 1085 (母函数初学,其他简便方法)
- 二.I/O模型
- 轻松解决mscorsvw.exe进程CPU占用高的问题
- C++不定参数的应用[转载]
- swift设计模式学习二
- 设计模式六大原则(1):单一职责
- cgi,wsgi
- 关于输入两个值后输出最大公约数和最小公倍数
- 剑指offer(31):最小的k个数
- NOIP - 关押罪犯
- poj 2104 K-th Number(主席树,静态第k小)
- hdu 5673 robot【默慈金数or卡特兰数】
- 利用组策略限制程序运行