设计模式——模板方法模式

模板方法(Template Method)模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。



AbstractClass:抽象类,实现一个模板方法,定义一个算法的骨架;定义抽象的原语操作,具体的子类重定义它们以实现一个算法
ConcreteClass:具体类,实现原语操作以完成算法中特定子类的步骤;

适用性:
(1)一次性实现一个算法的不变部分,并将可变部分的行为留给子类实现;
(2)将各个子类中公共的行为提取出来并集中在一个公共父类中以避免代码重复;
(3)控制子类扩展,只允许在这些点进行扩展;

特点:
(1)模板方法提供一种反向的控制结构,即父类调用子类的操作;
(2)提供钩子操作(Hook Operations),提供了缺省的行为(通常是空函数),子类可以在必要时进行扩展

实现:
(1)原语操作可以定义为protected,这样只能被子类调用,必须重定义的原语函数定义为virtual, 一般模版方法都加上final关键字,不允许被覆写
(2)由于重定义的操作越多,子类越冗余,所以尽量减少原语函数;
(3)可以给必须重定义的函数减少前缀,方便识别;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值