模版方法模式

模版方法模式

模版方法要用final进行修饰,可以防止该算法被子类覆盖。模版方法就是提供并保护了一个算法骨架,子类为一个或多个步骤定义具体实现。

模版方法提供一个钩子

钩子的作用是根据某些条件实现模板算法中的可选部分。使子类可以对超类的模版作出一定的影响和抉择。Runtime.getRuntime().addShutdownHook();是Jvm在退出后的一个钩子。

好莱坞原则

我来找你,你别来找我。为了防止组件之间的相互依赖现象,造成系统设计的迷惑性。

模版方法,客户端通过调用抽象类高层组件的方法,可以调用具体实现类的具体实现方法,这样的话,父类了解子类的实现,子类也了解父类的实现,是一种典型的好莱坞原则的使用。这样可以减少相互依赖的现象,让整个系统设计更清晰。这是一种设计框架的技巧,可以让底层组件能被挂钩到进框架的计算中。

javaApi中Arrays的sort()方法,可以对数组进行排序,当你的compareTo()实现方法不同时,排序的结果也会不同,而java用Comparble接口保证,你必须实现这个方法。超类实现一个基础的算法骨架,达到代码的复用,并允许子类指定行为,这简直棒极了。

这是一种变体的模版方法,一个类中实现固定的算法,变化的算法由其他接口具体实现类进行决定,也可以叫做模版方法。

模版、策略和工厂方法

模版方法,一个接口或抽象类的不同实现,产生不同的效果。策略模式,通过对象组合的方法,一个接口或抽象类,产生不同的效果。区别在于,模版方法模式的子类实现部分算法,固定算法由父类或父接口实现,保证算法大纲的结构不变。而策略模式的子类实现了全部的算法。

工厂方法,是模版方法的一个特殊变种,确实是!!不论是工厂方法模式,还是抽象工厂模式。

总结

模版方法,是一个定义框架的绝棒的模式,高层组件提供一个固定的算法骨架,子类可以将自己的算法挂钩进去,并产生作用。这个在日常的开发中还是经常使用的。

抽取变化:不变的部分是整体的算法骨架,变化的部分是某些步骤的算法实现,将变化的部分在骨架中abstract,由具体的实现类进行实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值