设计模式 | 模版方法

说明

模板方法是通过汇总 或排序基本方法而产生的结果集。模板方法在一些开源框架中应用很多,它提供了一个抽象类,然后开源 框架写了一堆子类,在《XXX In Action》中就说明了,如果你需要扩展功能,可以继承了这个抽象类,然 后修改 protected 方法,再然后就是调用一个类似 execute 方法,就完成你的扩展开发,确实是一种简单 的模式。

初级程序员在写程序的时候经常会问高手“父类怎么调用子类的方法”,这个问题很有普遍性,反正我 是被问过好几回,那么父类是否可以调用子类的方法呢?我的回答是能,但强烈的、极度的不建议,怎么 做呢?

  • 把子类传递到父类的有参构造中,然后调用;
  • 使用反射的方式调用,你使用了反射还有谁不能调用的?!
  • 父类调用子类的静态方法。 这三种都是父类直接调用子类的方法,好用不?好用!解决问题了吗?解决了!项目中允许使用不?

不允许!我就一直没有搞懂为什么要父类调用子类的方法,如果一定要调用子类,那为什么要继承它呢?
其实这个问题可以换个角度去理解,在重写了父类部分方法后,再调用从父类继承的方法,产生 不同的结果(而这正是模板方法模式),这是不是也可以理解为父类调用了子类的方法呢?你修改了子类, 影响了父类的结果,模板方法模式就是这样效果。

示例


// 别想了 这个设计过于简单 正常编码就能编写 别看啥例子了  要看再百度一下子

您的支持是对我最大的鼓励!

发表于: 作者:憧憬。
关注互联网以及分享全栈工作经验的原创个人博客和技术博客,热爱编程,极客精神
Github 新浪微博 SegmentFault 掘金专栏