设计模式之模板方法模式

  • 设计模式与设计原则,设计模式,模板方法模式,
  • 2016-05-16 03:49:21

Define the skeleton of an algorithm in an operation,deferring some steps to subclasses,Template Method lets subclasses redefined certain steps of an algorithm without changing the algorithm's structure. 定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

优点

  • 封装不变部分,扩展可变部分
  • 提取公共部分代码,便于维护
  • 行为由父类控制,子类实现

Android 中的运用

Android 里,Activity 就是模板方法的一个例子,当你启动一个 Activity 的时候,会依次调用 onCreate() onStart() onResume()等方法,你只需要根据你的需求,分别在这几个方法里实现你需要的业务逻辑,Android 的框架会在适合的时机调用这些方法。

使用模板方法模式的代码有时是不利于阅读的,也就是易读性是不够的,因为一个完整的业务逻辑有部分在父类,有部分在子类,这个对新加入的阅读者在短时间内理解造成了一个困难。就好象作为一个 Android 开发者,你必须非常清楚 Activity 的生命周期,不然你不知道这几个方法是什么意思,什么时候调用,该填充什么样的代码。而很多时候,我们自己设计的程序,如果使用了模板方法模式,但是文档又不全的话,新加入的阅读者需要花费很多的时间和精力去捋清父类和子类的关系。

除了Activity,还有四大组件的其他三个,Service,Provider,BroadcastReceiver 都是这样设计的,还有其他包括 AsyncTask,也是模版方法模式。这种设计模式大体上都有一个共同的特点,一般你不需要直接调用模版方法里的方法。

23种设计模式

相关文章

- EOF -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 设计模式之模板方法模式
本文地址: https://binkery.com/archives/461.html