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

迭代器模式

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

HeadFirst设计模式学习笔记6-迭代器模式&组合模式_第1张图片

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

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

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

OO设计原则

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

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

组合模式

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

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

你可能感兴趣的:(设计模式,c,OO,qt,图形)