这是本人的设计模式学习笔记,把自己学习过程中的一些总结和认识记录下来,与诸君共勉。本日为大家带来模板模式,迭代器模式,组合模式。
模板方法模式指在一个方法中定义一个算法的骨架,进而将一些步骤的实现延迟到子类中,使得子类可以在不改变算法结构的前提下重定义算法步骤。
给出模板模式的结构示意图:
模板的实际使用十分广泛,我们经常在使用时还未意识到这是模板模式。模板模式的许多变体也并不如标准形式那么规范,而被一眼认出。
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露内部的表示。
迭代器的概念和聚合这一数据结构是紧密相关的,这一结构比较有代表性的有数组、vector、list等。迭代器是一个非常常用的工具,在许多现代语言中都提供了迭代器的实现。我们给出迭代器的结构示意图:
组合模式允许你将对象组合成树形结构来表现 整体/部分 的层次结构。组合让客户以一致的方式处理个别对象以及对象组合。
下面给出组合模式的结构示意图:
一个为大家所熟知的就是dom树,每一个节点都暴露出了诸如on等通用接口,可以索引到它的子节点,可以说是一个非常典型的组合模式。
对于组合模式能说的并不多,就我个人而言,更多认为它只是一种数据结构上的扩展,即是利用组合来实现了多叉树的结构,然后对每个节点暴露相同的接口以将一些本来是结构相关的操作(比如遍历,指向孩子等)隐藏起来,让上层可以十分方便以树分支为单位进行操作而非是节点为单位。