Form Template Method (塑造模板函数)

Summary:你有一些子类,其中相应的某些函数以相同顺序执行相似的操做,但各个操做的细节上有所不一样。将这些操做分别放进独立函数中,并保持它们都有相同的签名,因而原函数也就变得相同了。而后将原函数上移至超类。函数

                                               

动机工具

继承是避免重复行为的一个强大工具。不管什么时候,只要你看见两个子类中有相似的函数,就能够把它们提高到超类。可是若是这些函数并不彻底相同该怎么办?咱们仍有必要尽可能避免重复,但又必须保持这些函数之间的实质差别。测试

常见的一种状况是:两个函数以相同顺序执行大体相近的操做,可是各操做不彻底相同。这种状况下咱们能够将执行操做的序列移至超类,并借助多态保证各种操做仍得以保持差别性。这样的函数被称为(Template Method)模板函数 spa

作法 继承

1.在各个子类中分解目标函数,使分解后的各个函数要不彻底相同,要不彻底不一样编译

2.运用Pull Up Method将各子类内彻底相同的函数上移至超类。模板

3.对于那些(剩余的、存在于各子类内的)彻底不一样的函数,实施Rename Method,使全部这些函数的签名彻底相同。im

à这将使得原函数变为彻底相同,由于它们都执行一样一组函数调用;但各子类会以不一样方式响应这些调用img

4.修改上述全部签名后,编译并测试。di

5.运用Pull Up Method将全部原函数逐一上移至超类。在超类中将那些表明各类不一样操做的函数定义为抽象函数。

6.编译,测试

7.移除其余子类中的原函数,每删除一个,编译并测试

相关文章
相关标签/搜索