博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式九之迭代器与组合模式
阅读量:5827 次
发布时间:2019-06-18

本文共 1071 字,大约阅读时间需要 3 分钟。

  管理良好的集合。有许多种方法可以把对象堆起来成为一个集合。比如,数组、堆栈、列表或者是散列表中。有时候可以不用让客户看到我们的实现,怎么让客户遍历对象而又无法窥视你存储对象的方式,可以学习创建一些对象超集合。

  我们可以对遍历封装,那么这就是迭代器模式,依赖一个名为迭代器的接口。如JAVA中就提供了得Iterator.集合,有时候也被成为聚合(aggregate)。

  可以多态地处理任何项的集合。

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

  迭代器模式给我们提供了一种方法,可以顺序访问一个聚集对象中的元素,而又不知道内部是如何表示的。在设计中使用迭代器的影响是明显的:如果你又一个统一的方法访问聚合中得每一个对象,就 可以编写多态的代码和这些聚合搭配,使用一些printMenu方法,只要有了迭代器这个方法根本不管菜单项究竟是由数组还是由ArrayList来保存的。

  迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象,这不仅让聚合的接口和实现变得更简洁,也可以让聚合更专注在它所应该专注的事情上面(也就是管理对象集合),而不必去理会遍历的事情。

  单一责任,类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变的区域。这个原则告诉我们,尽量让每个类保持单一责任。

  内聚,用来度量一个类或模块紧密地达到单一目的或责任。

  当一个模块或一个类被设计出只致辞一组相关的功能时,我们说它具有高内聚;反之,当被设计成致辞一组不想关的功能时,我们说它具有低内聚。

  时候到了,就必须重构我们的代码,使它能够成长。如果不这么做,就会导致僵化和没有弹性的代码,完全看不到萌发新生命的希望。

----------

  组合模式,允许你将对象组合成属性结构来表现"整体/部分"层次结构。组合能让客户以一致的方式处理个别对象以及对象集合。

  让我们以菜单为例思考这一切:这个模式能够创建一个树形结构,在同一个结构中处理嵌套惨淡和菜单项组。通过将菜单和项放在相同的结构中,我们创建了一个整体/部分层次结构,即由菜单和菜单项组成的对象树。但是可以将它视为一个整体,像是一个丰富的大菜单。如果我们有了一个树形结构的菜单、子菜单和可能还带有菜单项的子菜单,那么任何一个菜单都是一种组合。因为它既可以包含其他菜单,也可以包含菜单项。个别对象只是菜单项--并未持有其他对象。

转载于:https://www.cnblogs.com/likeshu/p/5040968.html

你可能感兴趣的文章
onchange()事件的应用
查看>>
Windows 下最佳的 C++ 开发的 IDE 是什么?
查看>>
软件工程师成长为架构师必备的十项技能
查看>>
python 异常
查看>>
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
查看>>
解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题
查看>>
多线程day01
查看>>
react-native 模仿原生 实现下拉刷新/上拉加载更多(RefreshListView)
查看>>
MySQL出现Access denied for user ‘root’@’localhost’ (using password:YES)
查看>>
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>
红黑树
查看>>
UIImagePickerController拍照与摄像
查看>>
python调用windows api
查看>>
第四章 mybatis批量insert
查看>>