zoukankan      html  css  js  c++  java
  • 迭代器与组合模式

    第九个模式:迭代器与组合模式

    9.1问题引入:

    我要需要创建一个对象,将它称为迭代器(Iterator),利用它来封装“遍历集合内的每个对象的过程”。想让我们在ArrayList上试试:

    image

    将它也在数组上试试:

    image

    9.2会见迭代器模式

    关于迭代器模式,我们需要知道的就是它依赖于一个名为迭代器的接口。一旦我们有了这个接口,就可以为各种对象集合实现迭代器:数组、散列表、列表····如果我们想要为数组实现迭代器,以便使用在DinnerMenu中,看起来就像这样:

    image

    看看第一版的设计:

    image

    9.3做一些改良

    我们使用Java的Iterator接口,这会带来很多的好处。

    首先看看java.util.Iterator接口:

    image

    煎饼屋菜单和餐厅菜单的类,都实现了Menu接口,女招待可以利用接口(而不是具体类)引用每一个菜单对象。这样,通过“针对接口编程,而不针对实现编程”,我们就可以减少女招待和具体累之间的依赖。

    这个新的菜单接口有一个方法,createIterator()。此方法是由煎饼屋菜单和餐厅菜单实现的。每个菜单类都必须提供适当的具体迭代器。

    image

     

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

    下面是迭代器模式的类图:

    image

    9.4组合模式的引入

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

    组合模式的类图如下:

    image

  • 相关阅读:
    linux压缩与解压
    simple 单例
    模板字符串
    变量的解构赋值
    let和const关键字
    React的基本认识
    Docker安装Nginx
    jenkins创建工程
    Jenkins系统初始化配置
    在CentOS上使用Docker镜像安装Jenkins
  • 原文地址:https://www.cnblogs.com/maverick-fu/p/4504229.html
Copyright © 2011-2022 走看看