语言与模式-23迭代器模式
来源:互联网 发布:天刀少女捏脸数据导入 编辑:程序博客网 时间:2024/06/10 02:03
意图
提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
适用性
- 访问一个聚合对象的内容而无需暴露它的内部表示。
- 支持对聚合对象的多种遍历。
- 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。
Java实现
Java提供了Iterable接口,直接实现此接口即可!
public class AList implements Iterable{ ... private int idx; public static void main(String[] args) { AList list = new AList(); list.add(1); list.add(2); list.add(3); for(Object o : list){ System.out.println(o); } } @Override public Iterator iterator() { return new Iterator() { @Override public boolean hasNext() { return idx < length; } @Override public Object next() { return arr[idx++]; } }; }}
Clojure实现
对于集合的操作都有相应的函数!一般不需要遍历就可以操作集合!比如map,reduce等函数!不需要此模式!
总结
可以看出,对于Clojure来说,绝大部分的设计模式都不是必须的!很多所谓的设计模式,在Clojure中使用语言特性就可以轻松解决!
同时可以看出,Java之所以需要设计模式的一个原因就是它的最小单元是类!也同时引起另一个思考,面向对象语言有鼓吹的那么好吗?
至少目前我的观点是:OO强项在建模,弱项是计算,而计算正是函数式语言的强项!
0 0
- 语言与模式-23迭代器模式
- 语言与模式-01单例模式
- 语言与模式-02工厂模式
- 语言与模式-03抽象工厂模式
- 语言与模式-04原型模式
- 语言与模式-05生成器模式
- 语言与模式-07代理模式
- 语言与模式-08适配器模式
- 语言与模式-09组合模式
- 语言与模式-10装饰模式
- 语言与模式-11桥接模式
- 语言与模式-12享元模式
- 语言与模式-13模板模式
- 语言与模式-14备忘录模式
- 语言与模式-15观察者模式
- 语言与模式-16责任链模式
- 语言与模式-17命令模式
- 语言与模式-18状态模式
- 语言与模式-22访问者模式
- JAVA中的反射机制
- C 二分查找
- CSDN-markdown编辑器简洁的语法与呈现效果对照
- 利用getchar()、putchar()实现标准输入输出,且显示出行号
- 语言与模式-23迭代器模式
- 03.11 加班遇到一个问题
- shell命令汇总
- 黑马程序员——JAVA笔记之网络编程
- UVA 10453-Make Palindrome(DP)
- 使用搜狐Sendcloud的Webapi发送邮件:Jodd和Apache Httpclient
- dwr session error
- 《c primer plus》编程练习回顾-第八章
- 10 Broadcast 监听短信