既然用了继承,并且肯定这个继承有意义,就应该要称为子类的模板。所有重要的代码都应该要上升到父类去。而不是让每个子类都去重复。
当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
/**
* @Author: subd
* @Date: 2019/9/26 7:59
* 模板方法模式
*/
public class TemplateMethodPatterns {
static abstract class AbstractClass {
/**
* 一些抽象行为放到子类去实现
*/
abstract void PrimitiveOperation1();
/**
* 模板方法,给出了逻辑的骨架。而逻辑的组成是一些相应的抽象操作,他们都推迟到子类实现。
*/
abstract void PrimitiveOperation2();
public AbstractClass() {
PrimitiveOperation1();
PrimitiveOperation2();
System.out.println("");
}
}
static class ConcreteClassA extends AbstractClass {
@Override
void PrimitiveOperation1() {
System.out.println("具体类A方法1实现");
}
@Override
void PrimitiveOperation2() {
System.out.println("具体类A方法2实现");
}
}
static class ConcreteClassB extends AbstractClass {
@Override
void PrimitiveOperation1() {
System.out.println("具体类B方法1实现");
}
@Override
void PrimitiveOperation2() {
System.out.println("具体类B方法2实现");
}
}
public static void main(String[] args) {
AbstractClass c;
c = new ConcreteClassA();
c = new ConcreteClassB();
}
}
本文深入探讨了模板方法模式的设计理念,介绍了如何通过定义算法骨架并在子类中重定义特定步骤,实现代码复用和灵活性。提供了Java代码示例,展示了抽象类与具体类之间的关系。
1666

被折叠的 条评论
为什么被折叠?



