设计模式(九)主动对象模式
来源:互联网 发布:名著推荐 知乎 编辑:程序博客网 时间:2024/06/05 13:53
1. 用到了command与proxy模式,变成了一个更强大的模式。
2. 一般的command模式是当有请求到来的时候,在主线程中(也可以是其他线程,主线程这里只表示上下文)生成一个command,然后push到命令池(并不是所有的都有命令池的,这也是主动对象不同的地方,主动对象都有单独线程,不是在当前上下文中执行),在命令池线程中执行execute方法,或者在主线程中直接调用execute的方法(在主线程中,并不是异步的调用,这也是与主动对象模式的区别)。
3. 那么这样看来,主动对象与带有命令池的command模式很像了?目前理解差不多,如果所有command的execute方法全部在command内部实现,那么主动对象就变成了对生成命令职责和线程池的外观(不是代理,没有代理的对象,主动对象的代理本意是command的execute的具体方法所依赖的实现具体对象)。
4. 谁是主动对象?并不是上面提到的command,而是代理者是主动对象,直接调用代理者的方法,然后对用用户开看,这个方法就去在其他线程中执行去了,而且这个主动对象中没有任何关于如何分派线程方法的细节,代理者中有一个schedule者持有线程,一般schedule在构造函数中就启动一个线程。
5. 这个模式也可以用来重构对象,把一个被代理者重构成一个主动对象,而不需要更改被代理者的任何代码。
6. 被代理者中持有一个schedule和具体的被代理实现者,一般command的execute方法,可以在command中实现,也可以在被代理者中实现。这个主要看使用情况,从面向对象的角度来开,应该在command的execute方法中实现,但是具体情况,具体分析。
7. 主线程中使用代理对象,在代理对象中创建具体的command,相当于把根据请求创建何种对象的职责转移到了代理者中,同样有利于扩展,例如当一个请求对应的command改变的时候,不用更改主线程中代码,直接更改代理对象中的代码就可以了。
8.这个模式特别适用于想把一个同步接口的sdk或dll接口装换成异步的场景。
- 设计模式(九)主动对象模式
- 设计模式- 主动对象(Active Object)
- 设计模式- 主动对象(Active Object)
- 设计模式- 主动对象(Active Object)
- 主动对象模式
- ACE主动对象模式
- ACE主动对象模式
- ACE主动对象模式
- ACE主动对象模式
- ACE主动对象模式
- 面向对象的设计模式(九),适配器模式
- 二. 主动对象(Active Object)模式
- 二. 主动对象(Active Object)模式
- 主动对象模式(Active Object)
- ACE主动对象模式(1)
- ACE主动对象模式(2)
- ACE主动对象模式(1)
- ACE主动对象模式(2)
- 偶发性的camera等应用的菜单键,后退键不起作用的问题
- (十六)错误和异常
- 如何在eclipse里关联查看android源码
- 在Eclipse中使用Checkstyle
- 大家好,这是我的第一篇博文
- 设计模式(九)主动对象模式
- android中的style部分属性值介绍
- 技术线?还是技术管理线?
- Android socket 客户端 C++服务端, 延时严重解决,贴点粘包代码
- 邮件订阅模块使用说明
- 你好,世界
- Linux学习篇(三)Code::Bolcks多线程学习
- Linux中socket 错误编码表 errno
- python实现简易联系人