设计模式聊一聊模板方法设计模式
Posted 长城守卫队长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式聊一聊模板方法设计模式相关的知识,希望对你有一定的参考价值。
1.关于模板方法设计模式
有一个问题 就是说,这个发短信的代码里面,都有一段通用的计算逻辑,是完全相同的代码 但是相同的一段代码,给通过复制粘贴的方式,放到了不同的类里去 一旦说,那段通用的计算逻辑,要修改,就涉及到多个类都要去修改那个代码 如果你一旦忘了修改某个类中的那段代码,后果不堪设想 而且到了后期,几乎没人记得清楚,那段通用逻辑代码放在了多少个类中,如果要排查,需要将很多类重新 读一遍代码 这就是垃圾代码,扩展性,维护性,很烂
2.一个helloworld级别的demo
public class TemplateMethodPatterDemo {
public static void main(String[] args) {
DiscountCalculator calculator1 = new DiscountCalculator1();
calculator1.calculate();
DiscountCalculator calculator2 = new DiscountCalculator2();
calculator2.calculate();
DiscountCalculator calculator3 = new DiscountCalculator3();
calculator3.calculate();
}
public interface DiscountCalculator {
void calculate();
}
/**
* 模板方法实现的精华所在
* @author zhonghuashishan
*
*/
public static abstract class AbstractDiscountCalculator implements DiscountCalculator {
public void calculate() {
// 完成通用的计算逻辑
commonCalculate();
// 完成特殊的计算逻辑
specificCalculate();
}
private void commonCalculate() {
System.out.println("通用的计算逻辑,修改了一下");
}
protected abstract void specificCalculate();
}
public static class DiscountCalculator1 extends AbstractDiscountCalculator {
public void specificCalculate() {
System.out.println("优惠计算器1的特殊计算逻辑");
}
}
public static class DiscountCalculator2 extends AbstractDiscountCalculator {
public void specificCalculate() {
System.out.println("优惠计算器2的特殊计算逻辑");
}
}
public static class DiscountCalculator3 extends AbstractDiscountCalculator {
public void specificCalculate() {
System.out.println("优惠计算器3的特殊计算逻辑");
}
}
}
以上是关于设计模式聊一聊模板方法设计模式的主要内容,如果未能解决你的问题,请参考以下文章