工厂模式
设计工厂模式的目的是为了创建对象。它通常在类或者类的静态方法中实现,具有下列目标:
- 当创建相识对象时执行重复操作
- 在编译时不知道具体类型的情况下,为工厂客户提供一种创建对象的接口
通过工厂方法创建的对象在设计上都继承了相同的父对象这个思想,它们都是实现专门功能的特定子类。有时候公共父类是一个包含了工厂方法的同一个类。
看一个汽车工厂实例:
|
|
再看看使用:
实现该工厂模式并没有特别的困难,所有需要做的就是寻找能够创建所需类型对象的构造函数。
迭代器模式
提起迭代器就会联想起ES6新支持的迭代协议,迭代器,可迭代对象;其实迭代器模式就是跟ES6的迭代器类似;
通常的迭代器模式中,有一个包含各种数据集合的对象。该数据可能存储在一个复杂数据结构内部,而要提供一种简单的方法能够访问数据结构中每个元素。对象的消费者并不需要知道如何组织数据,所有需要做的就是取出单个数据进行工作。
在迭代器模式中,需要提供一个next方法,还可以提供一个较为方便的hasNext方法,看一个例子:
|
|
除了上面的两个方法,还可以提供更简单的访问方式及多次迭代数据的能力,你的对象可以提供额外的便利方法:
rewind():重置指针到初始位置。
current(): 返回当前元素,因为不可能在不前进指针的情况下使用next()执行该操作。
|
|