设计模式-模板模式
定义: 一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
简单来说,一件事,又固定的步骤,抽象父类定义了他执行的步骤和每个步骤的的实现方法,而子类可以重写实现方法。
- 优点:
1.具体细节步骤实现定义在子类中,子类定义详细处理算法是不会改变算法整体结构。
2.代码复用的基本技术,在数据库设计中尤为重要。
3.存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。 - 不足:
每个不同的实现都需要定义一个子类,会导致类的个数增加,系统更加庞大。
类图:
抽象父类吃饭方法: 烧饭 ——> 吃 ——> 洗碗;
不同人烧烧菜不同
实例说明:
- 抽象父类
public abstract class EatTemplate {
/**
* 吃饭:需要 做饭 吃 洗碗
*/
protected void eat(){
//做饭
cook();
// 吃
meal();
// 洗碗
wash();
}
/*
* 该方法就是一个钩子方法,通过子类的实现干预父类的方法的业务流程
* 钩子方法挂载到父类方法中执行
* 每个人做的菜不同
* */
public abstract void cook();
public void meal() {
System.out.println("开吃了!");
}
public void wash() {
System.out.println("吃完饭,洗碗了!!!");
}
}
- 实现子类A
public class ParsonAEat extends EatTemplate {
@Override
public void cook() {
System.out.println("A烧了一条鱼!!!");
}
}
- 实现子类B
public class ParsonBEat extends EatTemplate {
@Override
public void cook() {
System.out.println("B烧了一碗红烧肉!!!");
}
}
- 测试类
public class TestTemplate {
public static void main(String[] args) {
EatTemplate a = new ParsonAEat();
a.eat();
System.out.println("==========================我是一条无情的分割线=====================================");
EatTemplate b = new ParsonBEat();
b.eat();
}
}
- 测试结果

模板模式是一种行为型设计模式,它允许子类在不改变整体结构的情况下重写算法的特定步骤。通过抽象父类定义执行步骤,子类实现细节操作。此模式提高了代码复用,遵循“开闭原则”。博客通过一个吃饭模板示例展示了模板模式的使用,包括抽象父类定义的吃饭流程(做饭、吃、洗碗)以及子类对做饭步骤的个性化实现。
1417

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



