DP讨论——模板模式

学而时习之,温故而知新。

字面理解

模板?啥叫模板?模板就是固定死了,就是一套流程/步骤上层写死了。固定死了的流程或者步骤就是模板。然后我们要重写或者改写的是写死的这套流程中的节点。俗称“套模板”。

敌人出招(使用场合)

当随着软件代码的迭代,慢慢发现,有些代码是可以抽成公共的,因为随着开发或者专业方向一旦固定,流程就固定,流程固定导致应用层面的代码也固定,但是变化的是流程某些节点会根据平台不同而不同,碰到这种问题时,怎么办?你出什么招?

你出招

这个时候就要出模板模式了。

具体招式

oop语言中实现

而oop里就是子类继承抽象类,返回父类指针,调用就行了,统一了上层应用程序的逻辑(上层应用代码不用改变),只需编写子类就可以实现算法替代,就是换底层(初始化时改下,上层业务代码不变)。

c中模板模式

在c中,比如大型软件中,框架固定,如果底层平台不断变化,那么可以搞这样的模板——上层流程不变,写死的,但是流程的各个节点采用统一的函数或者函数指针,然后在最底层各个平台实现上层流程所需的同名函数或者初始化时传递函数指针。这样上层框架代码不变,变的是编译时链接的平台函数是不同的,初始化时传递的函数指针是不同的。
这样上层代码不变,底层的各个平台进行扩展。
把握住变化的点和不变的点。

变化的点——底层各个平台,是不断变化的——增加(亦称之为扩展)、删除、修改等。
不变化的点——上层业务逻辑代码是写死的,固定的。

先绑定后绑定问题

这也是涉及开发流程或算法步骤是先绑定和后绑定的问题。啥意思?绑定我理解为由不由子类实现。

先绑定

在该类的方法里实现整个算法流程,且每一个步骤方法都自己实现,不需要子类实现。

后绑定

在抽象类的方法里实现整个算法流程,但是某些步骤用纯虚方法实现——由继承抽象类的子类来实现——类似于用c写算法时,某一步骤是用一个函数指针来表示——空出来一个接口,由别的模块实现,然后传递函数指针过来。这就是后绑定。

很显然模板模式属于后绑定的——就是看你实例化哪个子类,这个时候算法才对接起来。

参考代码

参考代码

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值