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

\qquad 迭代器模式讲的是,就鲜明的例子是如果想让一个类统一对数组和arraylist作一样的处理,如果常规写法的话就得分别对其写函数,因为这两种数据格式的操作方法不太一样。但是我们都可以对其使用一个迭代器进行包裹,让迭代器外面显示出来统一的操作方法,供其他类进行调用。
\qquad 这里目前看起来非常简单,估计是后面要讲到和组合模式的相关联系,配合使用之类的。
在这里插入图片描述
在这里插入图片描述
\qquad 一个类只承担一份责任听起来似乎很简单,但是我之前那个项目做的就很差,最多只能算是,一个类承担了该类的责任。但是明明很多责任都是可以甚至说应该分出去更加细化做的,但是没有做到。
\qquad 当时是按模块分的,每个模块再按模块中的核心类进行分类,在由核心类引发或者说核心类对应的界面的后端功能处作对应的功能开发,确实太草率太草台班子了点。

组合模式
\qquad 这个我大致能get到它的意思。就是将一些不同的类,这些类可能有强相关性,可能没有那么多,在这里不重要,我们希望在外面,对其有一个归一化的接口进行处理的时候,就可以采用组合模式。(写到这里我感觉好像核心又并不是这个了,这里给的例子指的应该是该模式里面可以将元素之间以树形结构串联起来,让叶子结点和非叶子结点能对外有一个统一化的处理方案(若干个方法),从而比较好外面对这个整个数据结构的直观调用?)。大致是这么个意思,这本书里面并没有对这个设计模式给出非常清楚明显的定义,我之后搜一搜补一下。
\qquad By the way,这个例子的数据结构又和树不太一样,这个里面非叶子节点十一点不存储实际信息的,所有信息都在叶子结点里面存储,进行数据结构设计的时候也是就事论事把这俩分别作为两个数据结构(都实现了Abstract MenuNode)来设计的,本来如果用树的观点来看,都用一个数据结构包裹着感觉也足够了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
\qquad 这里提到了准确的定义就类似于我上面括号中提到的,希望对整体和部分有一个统一的外部调用表达,从而创建出来的模式,但是我感觉即使是在这一章讲的例子里面,也是刻意没用到treeNode这种东西,讲的很勉强,或者说我对其理解还是太差了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值