模板方法模式
设计原则:破坏里氏替换,体现功能复用
常用场景:一批子类的功能有可提取的公共算法骨架
使用概率:80%
复杂度:中低
变化点:算法骨架内各个步骤的具体实现
选择关键点:算法骨架是否牢固
逆鳞:无
主要思想
定义一个抽象类,在抽象类中定义一个主方法,比如是某个算法,或者要做的某件事,
再定义一些抽象方法,这些抽象方法会在主方法中调用,这样主方法实际就相当于模板,其规定好了要做的这件事的所有步骤,
而其中部分步骤则交给实现类去做
比如策略模式中我们的加减算法,如果传入的是字符串
public abstract class MyAbstractCalculate {
public int calculated(String s1, String s2) {
int c1 = Integer.parseInt(s1);
int c2 = Integer.parseInt(s2);
return calculated(c1, c2);
}
public abstract int calculated(int c1, int c2);
}
public class MyPlus extends MyAbstractCalculate {
@Override
public int calculated(int c1, int c2) {
return c1+c2;
}
}
public class MyMinus extends MyAbstractCalculate {
@Override
public int calculated(int c1, int c2) {
return c1-c2;
}
}