23种设计模式之模板方法模式
模板方法模式的定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中. 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 通俗的讲,就是将子类相同的方法,都放到其抽象父类中 类图如下: ![]() 其中,AbstractClass 叫抽象模板,它的方法分为以下两类:
ConcreteClass1和ConcreteClass2叫做具体模板,实现父类所定义的一个或多个抽象方法,也就是父类定义的基本方法在子类中得以实现. 抽象模板类实现代码如下: ![]() 具体类实现基本方法. 模板方法模式的应用模板方法模式的优点
模板方法模式的缺点 按照我们的设计习惯,抽象类负责声明最抽象,最一般的食物属性和方法,实现类完成具体的事物属性和方法. 但是模板方法模式却颠倒了,抽象类定义了部分抽象方法,由子类实现,子类执行的结果影响了父类的结果,也就是子类对父类产生了影响,这在复杂的项目中,会带来代码阅读的难度,而且也会让新手产生不适感 模板方法模式的使用场景
模板方法模式的扩展将上面的 AbstractClass 抽象类修改后代码如下: ![]() 子类实现 isRun() 方法,通过子类的不同实现,可以影响到公共代码的执行,暗爽 也就是说外界条件改变,影响到模板方法的窒息那个. 在我们抽象类中 isRun 的返回值就影响了模板方法的执行结果,该方法就叫做钩子方法. 模板方法模式就是在模板方法中按照一定的规则和顺序调用基本方法. 使用模板方法模式,是非常容易扩展的一种模式 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |