什么是模板方法设计模式
模板方法设计模式是基于抽象类的方法模式。在一个方法中定义了一个算法实现的基本步骤框架,并且将一些步骤的具体实现延迟到子类实现,模板模式要求子类可以在不改变算法结构的基础上,利用覆写的方法在子类中重新具体定义算法中的某些步骤。
开闭原则
开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
——————————————————————————————————(以上是百度百科解释)
在软件工程中我们知道软件系统中包含的很多部分,各种组件,有模块(Modules)、类(Classes)以及功能(Functions)等等部分组成,软件工程中开闭要求规定应该在不修改现有代码的基础上,引入新功能。
所以这个软件的各组件应该对扩展开发,对修改关闭。
模板方法的组成
一个最基本的模板方法应该至少由模板方法和步骤方法两部分构造。
步骤方法又可以分为抽象方法、最终方法和钩子方法。
实现思路
抽象出一个第三方,把各个具体实现中所共有的部分提取到第三方类中,这个把众多具体实现中共有的部分拿出去的过程叫做解耦。抽离的一起。
举个例子:
现实生活中有很多事情都是都不步骤的完成。先干什么后干什么。但其实很多类似的事情对应的步骤也是类似的。比如,做饭。虽然我个人不喜欢做饭,但是还是看了很多的网上的做菜步骤的。无论是做鱼香肉子,做宫保鸡丁,还是做西红柿炒鸡蛋。喜欢总结的我发现,很多步骤都是很类似的。比如:锅里加上油,加调料,从锅里盛出来。如果我们不适用模板,不从具体的方法中解耦出来是不是如果我们写代码写类模拟实现,需要写好多遍。一个类一遍。而且一旦这个共同都有的步骤