HeadFirst设计模式学习笔记6-迭代器模式&组合模式

迭代器模式

定义:提供了一种方法,可以顺序的访问一个聚合对象内的各个元素,而又不暴露其内部的表示。类图如下:


这个模式至少带来了两个好处:

1.      采用分离出去的的遍历方式设计可以让遍历从聚合类中解耦,可以实现自己的遍历方式,并且对外提供遍历的统一接口,封闭对内实现方式。

2.      聚合对象不再负责维护内部对象集合的遍历方式,这样减少了聚合对象的职责,让聚合类的接口和实现更见简洁。

OO设计原则

一个类应该只有一个引起变化的原因。

这句话的意思是说,尽量让每个类保持单一责任。如果影响一个类的原因超过一个,导致的后果就是当你为了某一个原因修改一个类时,整个类的其他部分都会受到影响,从而导致不可预知的错误。区分设计中的责任会是比较困难的,需要不断检查自己的设计。

组合模式

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

组合模式带来的一个显而易见的好处是,你可以使用一个统一的接口去访问整个树形的聚合对象。这会带来很多好处,比如,我们在设计图形界面的时候,将所有的控件组合成一个树形结构(实际上整个图形界面的元素本身也应该是一个树形结构),然后依次去访问并管理他。对于Qt这种C++库来说,大部分控件都有一个共同的父类QWidget,这样便为对象聚合提供了好的接口。在管理界面元素对象时可以尝试组合模式的设计思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值