美文网首页
设计模式--迭代器与组合模式

设计模式--迭代器与组合模式

作者: jack_520 | 来源:发表于2018-08-28 23:37 被阅读0次

    有许多种方法可以把对象堆起来成为一个集合。你可以把对象放进数组、堆栈、列表或者散列表(hashMap)中,每一种都有各自优缺点,但总有一个时候,你希望遍历这些对象,当你遍历对象时,你可能不希望客户看到你的实现,这时候就用到了迭代器模式。

    假设有两个餐厅,用不同的数据结构来存储他们的菜单,一个餐厅使用数组,另一个餐厅使用ArrayList.

    现在女招待需要打印出菜单上的每一项,按照一般方法就是用不同方法循环打印出菜单来,这里要写两个不同方法,如果有第三家餐厅,用另外方式存储菜单,我们就要另写方法了。

    例如这样:

    ··、

    看到上面代码,我们应该想想如何封装遍历。

    我们新建一个迭代器接口

    我们需要实现一个具体的迭代器,为餐厅菜单服务。

    餐厅菜单就变成这样了

    现在女招待的代码变成这样

    你还可以给Iterator接口添加方法,比如remove()

    还能进一步提前出Menu接口

    具体别的代码就不列出来了。这样女招待就能利用接口(而不是具体类)引用每一个菜单对象。这样就通过“针对接口编程,而不是针对实现编程”,我们就可以减少女招待与具体类之间的依赖。

    迭代器模式定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示。

    组合模式

    我们也可以使用组合模式来解决上面菜单问题。

    组合模式定义:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户一一致的方式处理个别对象以及对象组合。

    相关文章

      网友评论

          本文标题:设计模式--迭代器与组合模式

          本文链接:https://www.haomeiwen.com/subject/yircwftx.html