模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。开闭原则是指一个软件实体应该对扩展开放,对修改关闭。也就是说软件实体必须是在不被修改的情况下被扩展。模板方法模式意图是由抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类去实现,这是通过继承的手段来达到对象的复用,同时也遵守了开闭原则!

我们结合上面的定义解释一下该图。
-
AbstractClass便相当于上述作为抽象类的父类,ConcreteClass便是具体的实现子类。具体的应用中,可能存在一到多个实现子类。
-
AbstractClass定义了一个public的templateMethod()模板方法以及作为步骤的method1()与method2()方法。
- AbstractClass#templateMethod()方法体调用method1()与method2()方法
public void templateMethod() {
...
this.method()1;
...
this.method()2;
...
}
- method1()与method2()方法为受保护的抽象方法(protected abstract)。实现子类ConcreteClass需要重载该方法。
Template Method模式的应用场景:
Template Method模式一般应用在具有以下条件的应用中:
- 具有统一的操作步骤或操作过程
-
具有不同的操作细节
-
存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
本文深入探讨了模板方法模式的原理与应用场景,通过实例解释了如何使用此设计模式实现统一逻辑框架下的不同操作细节。重点阐述了开闭原则在模式中的应用,以及如何通过继承实现对象复用。

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



