访问者模式(未完成)(未看代码,只填了使用场景)
2013-04-10 21:10
399 查看
一)故事
二)定义
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
三)代码例子
四)优点
五)缺点
六)使用场景
1)一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作,也就是说用迭代器模式已经不能胜任的情景。
2)需要对一个对象结构中的对象进行很多不同并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。
总结一下,在这种地方你一定要考虑使用访问者模式;业务规则要求编历多个不同的对象。这本身也是访问者模式出发点,迭代器模式只能访问同类或者同接口的数据(当期了,如果你使用instaneof,那么能访问所有的数据,这没有争论),而访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执行不同的操作,也就是针对访问的对象不同,执行不同的操作。访问者模式还有一个用途,就是充当拦截器(Interceptor)角色。
七)注意事项
八)扩展
九)总结
二)定义
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
三)代码例子
四)优点
五)缺点
六)使用场景
1)一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作,也就是说用迭代器模式已经不能胜任的情景。
2)需要对一个对象结构中的对象进行很多不同并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。
总结一下,在这种地方你一定要考虑使用访问者模式;业务规则要求编历多个不同的对象。这本身也是访问者模式出发点,迭代器模式只能访问同类或者同接口的数据(当期了,如果你使用instaneof,那么能访问所有的数据,这没有争论),而访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执行不同的操作,也就是针对访问的对象不同,执行不同的操作。访问者模式还有一个用途,就是充当拦截器(Interceptor)角色。
七)注意事项
八)扩展
九)总结
相关文章推荐
- 观察者模式(未完成)(未看代码,只填了使用场景)
- 适配器模式(未完成)(未看代码,只填了使用场景)
- 享元模式(未完成)(未看代码,只填了使用场景)
- 状态模式(未完成) (未看代码,只填了使用场景)
- 组合模式(未完成)(未看代码,只填了使用场景)
- 策略模式(未完成)(未看代码,只填了使用场景)
- 抽象工厂模式(未完成)(未看代码,只填了使用场景)
- 代理模式(未完成)(未看代码,只填了使用场景)
- [改善Java代码]不同的场景使用不同的泛型通配符
- 利用 vs2008 视警告为错误 的使用场景 可以达到 规范代码等作用
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- cocos2dx 代码使用cocoStudio 生成的场景json文件
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- eMule 的使用场景及初始化任务描述级eMule相关代码分析(仅涉及ed2k)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- CountDownLatch 使用场景讲解 及代码示例