-
模板方法模式
查看全部 -
模板方法模式
查看全部 -
模版模式: 共性抽取,规律总结,在抽象基类中提取公共代码定义流程。使用钩子函数进行扩展查看全部
-
模板模式查看全部
-
模板方法适用场景3
查看全部 -
模板方法适用场景2
查看全部 -
模板方法适用场景1
查看全部 -
模板方法的实现要素
查看全部 -
模板方法模式的缺点
查看全部 -
模板方法模式: 定义一个操作中的算法骨架, 将一些步骤延迟到子类中实现, 使子类可以在不改变一个算法机构的同时, 就重新定义一个算法的某些特定步骤.
举例: 银行办理流程, 冲泡饮料等
实现方式:
1. 创建一个抽象类, 定义一个final修饰的流程(骨架)方法
2. 流程(骨架)方法中调用多个子流程方法
3. 子流程方法: 不发生变化的方法 用private修饰 并实现
特定(需子类实现)的方法, 使用protected修饰, 并abstract 建立成 抽象方法
查看全部 -
public 和默认不写区别查看全部
-
业务场景需求分析:
查看全部 -
模板方法模式:Template Method
1、定义
定义了一个操作算法框架,而将一些步骤延迟到子类中实现,使得子类在不改变一个算法结构的同时就重新定义该算法的某些特定步骤。
2、实现
模板方法一定要申明成final,不能够被复写
钩子函数(HOOK):通过抽象类或是本类中提供一个默认或者为空的实现,具体的子类可以自行决定是否挂钩以及如何挂钩。在某任务之前、之后、执行中、报异常后调用的方法(是不是有种熟悉的感觉)
3、特点
优点:①封装性好 ②复用性好 ③屏蔽细节 ④便于维护
缺点:继承只能是单个的,重构时会遇到困难
4、应用
①算法或操作遵循相似的逻辑
②重构时(把相同的代码抽取到父类中)
③重要、复杂的算法,核心算法设计设计为模板方法查看全部 -
查看全部
-
查看全部
-
查看全部
-
钩子函数:提供一个默认的或者空的实现。 具体的子类可以自行决定是否挂钩以及如何挂钩。 也就是提供一个方法,子类想更改就更改,不更改就走默认的。 采用钩子函数来让子类自行判断要不要挂钩,在父类的实现框架中添加if语句做判断,然后再添加一个钩子函数来返回是否需要挂钩,在子类中也要重写这个方法来决定这个子类是否挂钩 钩子函数的使用,使固定的父类模版显得更加灵活,因为并不是所有子类的过程都遵循着父类的规则。而存在的这些些许的差异,因为钩子函数的引入,使得子类的过程可以和父类的过程存在变通性 用钩子(Hook)函数实现子类对算法框架个性化的扩展 1、思想 框架通过提供一个个的钩子,使框架具备了更大的灵活性。不想执行算法框架中的某些个步骤,我们可以脱钩,如果想执行的话,我们可以挂钩。 2、实现 在抽象类中,提供protected钩子方法。这是个实现的或空的方法。这样子类就可以选择覆写-持钩,也可以选择不覆写-脱勾。 3、使用 提供一个isXXX类型的钩子方法。用该方法控制算法框架中 4、某个步骤是否执行 子类不覆写这个方法,就是脱钩,仍按框架逻辑执行,一旦覆写,就是挂钩,将改变框架算法方向,按子类逻辑执行。查看全部
举报