CodeEase架构设计与重构iOS Developer

知识整理No8.之Template Method

2016-07-24  本文已影响48人  践行者

模板方法模式(Template Method)

背景

1.概述

在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。

2.问题

如何保证架构逻辑的正常执行,而不被子类破坏 ?

3.解决方案

模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 T模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

1)模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。
2)在模板方法模式中,我们需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来让子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。模板方法模式体现了面向对象的诸多重要思想,是一种使用频率较高的模式。

思考

剖析

定义

本质

UML

![Uploading template-example_429314.png . . .]

模式组成

例子

template-example.png

场景

扩展

优缺点

优点:

缺点:

总结

经验法则

正向依赖 VS 依赖倒置

模板方法模式的本质是依赖倒置
模板方法模式可以确保操作流程不变 的情况。赋予用户最大的自由度
模板方法模式也是实现代码重构的重要手段

上一篇 下一篇

猜你喜欢

热点阅读