模板方法模式

1.模板方法模式
1)定义:在一个方法中定义好算法的框架,一些具体的算法步骤可以延迟到子类中实现,从而使得在不改变算法结构的情况下,重新定义算法的某些具体步骤。

2)模板方法基本框架

abstract class TempletClass{
       //模板方法,在该方法中定义了基本的算法框架
       final void algorithmMethod(){
		primitiveOp1();
		primitiveOp2();
		concreteOp3();
                hook();
        }
	
        //需要子类实现的算法抽象步骤
	abstract void primitiveOp1();
        abstract void primitiveOp2();
        
      // 不可覆盖的具体方法
      final void concreteOp3(){
      }
//空的或者默认的可覆盖的具体方法 可以用于对模板方法的算法做一些控制
void hook(){
}
 }

3)使用场景:

a:子类必须提供算法中的某个方法或步骤的实现时,使用抽象方法;

b:如果算法的某个步骤是可选的,就使用钩子,模板中的钩子可以为空或者提供默认的实现,子类可根据实际覆盖钩子方法;

4)使用小诀窍

a:合理控制模板中抽象方法的数量,抽象方法不要分的太细,但也不要太少,否则缺少弹性;

b:某些步骤可选时,需由钩子提供控制;

c:注意策略与具体实现分离

5)具体使用示例 java 中 Array sort() 方法,只要数组对象实现了Comparable 接口,就可以排序任何数组对象;

6)类似模式区分

模板方法:父类定义算法模板框架,子类决定如何实现算法中的具   体步骤;

工厂方法:模板方法的一种特殊版本,只要用于剥离对象的实例化,转换到工厂方法中实例化对象;

策略模式:封装算法,使用组合的方式接入







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值